3

ユーザーがファイルをアップロードし、スクリプトを使用してファイルを変更してから、ファイルをユーザーに提供できるようにするページを設定する必要があります。

パーツのアップロードと変更を行っていますが、ファイルをどこに置くかわかりません。それらは1または2MBの領域になり、Webホスティング計画のスペースがほとんどないので、できるだけ早くファイルを削除したいと思います。ユーザーがリダイレクトされたときにブラウザでダウンロードするオプションが与えられた後よりも、ファイルが存在する理由はありません。

ファイルの作成時間をチェックし、特定の年齢である場合はファイルを削除するcronジョブを使用してこれを行う唯一の方法はありますか?

私はPythonとPHPを使用しています。

編集:

まず、ファイルがアップロードされます。次に、ファイルの場所がユーザーに返送されます。ページ上のjavascriptは、ファイルのパスにリダイレクトされます。ブラウザはファイルの保存ダイアログを開き、ファイルを保存するかキャンセルするかを選択します。キャンセルされた場合は、すぐにファイルを削除したいと思います。彼らがファイルを保存することを選択した場合、ダウンロードが完了したらファイルを削除したいと思います。

4

3 に答える 3

1

通常、ポリシーを設定する必要があります。ポリシーはfor any uploaded file, the life time is 5 minsです。

Kniganapolkeのソリューションは問題なく、おそらく最も安価で簡単に実装できます。実際のファイルがどこにあるか(サーバー内で、外部に公開してはならない)の情報を保持したくない場合は、これをデータベースに記録する必要があります。

しかし、長期的にはより良い代替ソリューションがあります。

キューを作成します。はい。ユーザーがFireFoxを閉じるタイミングを考慮する必要があるため、cronジョブが最適です。ユーザーがFirefoxを閉じているかどうかを確認するためにJavaScriptを本当に作成したいですか?私はJavaScriptの男ではないので、それを行う方法がわかりません。おそらく本当に簡単ではありません。ただし、シェルスクリプトや低レベルのシステムコマンドは扱いたくありません。Pythonでそれをしますか?つまり、cronジョブを使用しないでください。

ポリシーは、必要な数のものをキューにスローすることです。キューにアップロードを追加し、returnをスローし(リンクを表示)、次に削除ポリシーをスローします(現在の時刻が5分より長いかどうかを確認します)。そうでない場合は、同じポリシーをキューに戻します。

セロリなどのタスクキューが必要です(私のお気に入りの1つに名前を付けるだけです)

これらの分散タスクキューは、画像のアップロード、変更、URLのスローバックなどのWebサービスに最適です。サービスをブロックしたくない場合(変換に1分かかる場合はどうなりますか)?サーバーマン(apacheやnginxなど)は、適切に設定しなかった場合、おそらく内部でタイムアウトします。また、タイムアウトを長くしすぎないようにします。そうしないと、災害が発生します。

タスクキューを使用して、Webサービスを拡張できるようになりました。これにより、将来のプロジェクトが大幅に改善されます。

いくつかの読み

http://bitkickers.blogspot.com/2010/07/djangocelery-quickstart-or-how-i.html

Pythonのジョブキューの実装

于 2012-04-20T08:22:54.983 に答える
0

なぜそれを考えなかったのかはわかりませんが、私は Python の IRC で、まったく関係のない問題について話し合っていました。丁度!

ファイルを保存する必要はありませんでした。正しいヘッダーを付けてユーザーに送り返すためだけです。問題が解決しました!

于 2012-04-22T08:49:59.263 に答える
0

最初に思い浮かぶのは、JavaScript でタイムアウトを設定し、AJAX 要求をサーバー スクリプトに送信してファイルを削除することです。
ユーザーがページを離れたり閉じたりした場合も処理します (IE では onBeforeUnload イベントです)。

編集: ファイルのダウンロード方法を変更する必要があります。JavaScript でファイルのダウンロードを開始する例を参照してください。

于 2012-04-20T07:54:11.877 に答える