2012-04-05 5 views
3

私はこのページを利用して、ユーザーがドキュメントをアップロードできます(複数のドキュメント、サイズ制限はそれぞれ10MB)。それは2つのステップのプロセスです。ステップ1に入力フォームがあります。ステップ2は送信ボタン付きのプレビューページです。複数の/大きなファイルをアップロードする

フォームを送信せずにプレビューページでユーザーがブラウザを閉じるシナリオはどうすればよいですか?手順1の後、一時的な場所にファイルを保存する必要がありますか?これはまともな解決策ですか?

大きなファイルを(合理的に)アップロードするためのベストプラクティスは何ですか?

ありがとうございました。

答えて

0

あなたは、ファイルを保存してのみ、フォームの提出に彼らの最終的な場所にファイルをコピーするために一時フォルダを使用することができます。

いずれにしても、ガベージコレクタを実装する方がよいでしょう。ガベージコレクタは、毎晩テンポラリフォルダを空にできます。しかし、ガベージコレクタを使用するときに、送信されなかったファイルを識別する方法がある場合(たとえば、送信時にデータベースに行が追加された場合など)は、ファイルを最初から最後の場所に配置し、ガベージコレクタは毎晩それらを削除します。

大きなファイルのアップロードは、Uploadify:http://www.uploadify.com/などのJQuery UIプラグインを使用して行うことができます。 大容量のファイルをアップロードするには非常に便利なフラッシュを使用していますが、アプリケーションがiPadなどのAppleマシンをサポートしていないことに注意してください。

0

ユーザーが離れる場合は、最初からやり直します。彼らは正当な理由で去った可能性が高い。クラッシュがあった場合は、その責任を任せてください。データを送信せずにデータを保存すると、悪意のあるユーザーがストレージを悪用する可能性があります。

また、チャンクと呼ばれるプロセスを調べることもできます。 mvc3でのファイルのアップロードについてより深い議論について

、これはSO記事を参照してください。MVC 3 file upload and model binding

+0

"ユーザーが離れる場合は、最初からやり直してください。" - 手順1の後にファイルを保存する必要がありますか? – user471317

+0

@ user471317 - PRGパターンを使用してファイルを 'TempData'に配置することができます。ステップ1の後でファイルを保存する場合は、そのファイルをプレビューできるのはなぜですか?キャンセルボタンによる削除機能はありますか?彼らは受け入れることを決めた旗はセットされていますか?私が尋ねる理由は、過去のステップ2でコミットされていなかったファイルをどのように削除するかを決定するために監査を行う必要があるということです。ユーザーがステップ2で承認をクリックする必要がない場合は、手順1を実行し、他の場所をナビゲートして時間を節約します。 –

+0

"手順1の後にファイルを保存する場合、プレビューを許可する理由は?" - ステップ1の後にファイルを保存しないことをお勧めします。ステップ1の後でファイルをTempDataに保存することをお勧めしますか? – user471317

関連する問題