2012-02-17 16 views
2

私は3つのFileUploadコントロールを持っています。彼らはページPostBackときに内容を失う。このページは、ボタンをクリックしていくつかの非表示のコントロールを表示するとポストバックされます。FileUploadコントロールの内容が失われるPostBack

sessionを使わずに内容を保存するにはどうすればよいですか?

答えて

1

HTTP/Formsが動作するため、実際にはこれが回避されていません。ファイルは最初の投稿時にサーバーに送信されます。 ViewStateにファイルバイトを格納することもできますが、ポストバックは遅くなります。あなたのオプションは、ポストバックを実行せず、JavaScriptや他の選択肢を使用して同じ機能を取得したり、サーバー上のファイル(例:セッション、一時フォルダー、データベース)のどこかにファイルを格納することです。

+0

どのように 'javeScript'を使用できますか? – Meensat

+0

本質的には、ポストバックで変更するものについては、代わりにjavascriptで同じことを行います。そのため、ユーザーがフォームに完全に記入し、サーバーがファイルを受け入れる準備ができたら、ページは実際に返信されます。 たとえば、ユーザーが別のフィールドの可視性を設定するためのチェックボックスをチェックしたときにポストバックする代わりに、javascriptを使用してそれを行います。 – Chris

0

FileUploadコントロールの内容をserversideに保存します。またはuはhtmlページでレンダリングし、それを隠しておくことができますCSS

4

これは実際にセキュリティに関連しています。ファイルをアップロードしたサイトに「c:\ Users \ Meensat \ passwords.docx」のようなパスがあらかじめ入力されているとします。あなたは提出を打ち、あなたのパスワードを持っています。

ポストバックでできることは、.PostedFileプロパティを使用してファイルをチェックし、存在する場合は、それを一時ファイルに保存します。セッションでは、一時ファイルへの参照、ファイル名、等

.PostedFileが実際FileUploadコントロールのプロパティである

EDITを格納します。リンクはディスクにファイルを保存する方法を示すサンプルコードを持っていることを

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.postedfile.aspx

+0

'fileUpload1.postedFile'? – Meensat