2012-04-20 10 views
3

ユーザがファイルをアップロードし、そのファイルをスクリプトで修正してから、そのファイルをユーザに返すためのページを設定する必要があります。ウェブページ上にファイルを保存する

私はアップロードと修正の部品がダウンしていますが、ファイルを置く場所はわかりません。彼らは1または2 MBの領域になるだろう、私は私のWebホスティングプランにはほとんどスペースがないので、私はできるだけ早くファイルを取り除きたい。ファイルがリダイレクトされたときにブラウザからダウンロードするオプションが与えられた後に、ファイルが存在しなくなる理由はありません。

ファイルの作成時間をチェックし、特定の年齢であれば削除するcronジョブで唯一の方法ですか?

私はPythonとPHPで作業しています。

編集:

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

+0

これを行うには、PythonとPHPの両方ができます。どちらを回答したいですか? –

+0

@TheronLuhn、もしあなたが気にしないなら、両方。 – mowwwalker

+0

@TheronLuhnまた、それは異なります。ファイルを処理するスクリプトにコードが入っていれば、Pythonを優先しますが、それが独立して実行されているスクリプトであればPHPになります。いずれにせよ、私は両方を好むでしょう:D – mowwwalker

答えて

0

私はそれを考えていなかった理由を私は知らないが、私は完全に無関係な問題を議論する、Python用IRC上で、誰かがなぜ私がファイルを提供しただけではないのか尋ねました。まったく!

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

0

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

編集:ファイルのダウンロード方法を変更する必要があります。例えば、starting file download with JavaScriptを参照してください。

1

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

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

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

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

ポリシーは、キューに必要なだけ多くのものをスローします。キューにアップロードを追加し、戻り値をスローし(リンクを表示)、削除ポリシーをスローします(現在の時間が5分より長いかどうかを確認します)。そうでなければ、同じポリシーをキューにスローします。

あなたはこれらの分散タスクキューは、このような、画像をアップロードし、変更して、URLをバックスローなどのWebサービスのためのより理想的である

(ちょうど私のお気に入りの一つを名前に)などCeleryとしてタスクキューをしたいです。サービスがブロックされたくない場合(変換に1分かかる場合)あなたが正しく設定していないと、あなたのサーバーの人(apacheやnginxなど)がおそらく内部的にタイムアウトします。タイムアウトを長すぎるようにしたくない場合は、そうしないと災害が発生します。

タスクキューを使用すると、Webサービスを拡張できます。これはあなたの将来のプロジェクトをより良くするでしょう。

いくつかの測定値

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

job queue implementation for python

関連する問題