2011-01-21 10 views
0

私は、サーバーに任意のサイズ(最大30ギガ)のファイルを送信できるようにするアップローダを作成しています。AJAX経由でファイルを送信すると、まずメモリに読み込まれますか?

私の元の意図は、ファイルを断片に分割し、それらをサーバーに送信してそこに再アセンブルするJavaアプレットを書くことでした。 、代わりにPOSTのPUTを使用して:

しかし、誰かがAJAXのXMLHttpRequestのはnsIFileInputStream (https://developer.mozilla.org/en/using_xmlhttprequest#Sending_files_using_a_FormData_objectここでは一例)と一緒に仕事ができることを示唆しています。

私は2つのことを心配しており、答えを見つけることができないようです。

1)は、明らかに全体を破るだろうと、それを送信する前にファイルをメモリに読み込むためのAJAXの試み()

はウィル[EDIT] このhttp://www.codeproject.com/KB/ajax/AJAXFileUpload.aspx?msg=2329446例では、明示的に「彼らはそのdoesnのためActiveXObjectのを使用していると述べていますTファイルをメモリにロードすると、XMLHttpRequestがメモリにロードすることが示唆されます。正直言って、私はこの情報を見つけるのに苦労していることに驚いています。

2)このアプローチはどれほど信頼性がありますか。私は接続がちょうど死ぬとアップロードがゼロから再開しなければならないが、現実的には、約0.5MB/sのアップロードスロットルで標準のケーブル接続を使用すれば、30ギガバイトのファイルがサーバーに到着する可能性がある?

答えて

1

私はFile Apiとblob.sliceを使って同様のことをしようとしていますが、大きなファイルではメモリをクロックアップすることが判明しました。しかし、大きなスライスファイルではより良い再生をするGoogle Gearsを使用できます。また、XHRと組み合わされたFileReaderが頻繁にランダムに行うスライスオーダーでエラーを引き起こしません。

私はしかし、ええ

+0

.. JavaScriptを経由してファイルをアップロードすることは非常に不安定であること(一般的に)見つけるか、より多くの私はこれを調べて、より多くの私は、これは実行可能なアプローチではないと思われるに傾いています。 –

+0

それはおそらく、1日になります。他のオプションは、Flash、SilverlightまたはBrowserPlusを使用しています。ギアはHTML5のために放棄されているようだが、すべてのブラウザが正しく機能するまでサポートされている。 – Fabdrol

+0

ああ、BrowserPlusには、ファイルをアップロードする前にファイルをgzipしているような素晴らしいオプションがいくつかあります。アップロード時間を大幅に削減する必要があります。しかし、私は単一の小さなファイルのBPをお勧めしませんが、それは私の意見では少し過剰です。素晴らしい選択肢は、ユーザがインストールしたプラグインを選択するPLuploadです。 – Fabdrol

関連する問題