1

コードは、C#大きな画像ファイルをチャンクに分割して送信し、チャンクの順序を各リクエストのリクエスト パラメータとして送信します。Struts2 アクションでファイルを受け取りたい。私が見るほとんどの例は、Apache Commons File Uploadアップロードされたファイルを受信するために使用しますが、ファイルは<http type="file"/>マルチパートリクエストとして使用して転送されると想定しています。ストリーミング API でさえ、それを前提としています。

現在、各リクエストのチャンクを、チャンクのorderNumberパラメータから受け取ったインデックスの配列に格納することを考えています。すべてのチャンクが受信されたら、ファイルをシステムに書き込みます。しかし、それにはいくつかの問題があります。複数のリクエストにわたって配列の状態を維持する必要があり、アクション クラスはstateless. また、特定のチャンクが最後のチャンクであることをどのように確認できますか? (最後のチャンクでリクエストパラメータを送信できますが、他にもっとクリーンな方法があれば)

編集 - 画像の種類は異なる場合があります。EOF マーカーは常に定数のクエリ文字列パラメーターです。画像は常に一定サイズのチャンク (バッファーは 1024 バイト、変更可能) に分割されます (最後のものを除く)。C# プログラムは変更できます。C# コードを使用しているユーザーは既にサインインしており、異なるファイルを同時に転送することができます。After-crash-resume は必要ありません。

実際には、C# プログラムは、ファイルのドラッグ アンド ドロップを容易にし、それらをサーバーに送信するための単なるSilverlightプラグインです( IE のみ、IEはファイルのドラッグ アンド ドロップをサポートしていないため)。

4

0 に答える 0