2012-02-17 76 views
2

我有3 FileUpload控件。當頁面爲PostBack時,他們會丟失內容。當我點擊一個按鈕來顯示一些隱藏的控件時,該頁面會回發。FileUpload控件在PostBack上丟失內容

我能做些什麼來保持他們的內容不使用session

回答

1

由於HTTP/Forms的工作方式,真的沒有辦法解決這個問題。該文件將在第一篇文章中提交給服務器。您也可以將文件字節存儲在ViewState中,但回發速度會很慢。您的選擇是不執行回發並使用JavaScript或其他替代方法來獲得相同的功能或將文件存儲在服務器上的某個位置(例如:會話,臨時文件夾,數據庫)。

+0

我該如何使用'javeScript'? – Meensat 2012-02-17 20:58:19

+0

本質上,對於任何需要使用回發進行更改的內容,您都可以使用JavaScript來做同樣的事情,因此只有在用戶完全填寫表單並且服務器準備好接受文件後,頁面纔會實際回傳。 例如,當用戶選中複選框以設置其他字段可見性時,您可以使用javascript來完成此操作,而不是回發。 – Chris 2012-05-10 17:43:31

0

在服務器端保存FileUpload控件的內容。或者你可以在html頁面中渲染它,並使用它隱藏。使用CSS

4

這實際上是安全相關的。想象一下,通過文件上傳訪問一個網站,並預先填入「c:\ Users \ Meensat \ passwords.docx」之類的路徑。你點擊提交,他們有你的密碼。

您可以在回發中執行的操作是使用.PostedFile屬性檢查文件,如果存在,請將其保存到臨時文件中。在會議上,存儲參照臨時文件,文件名等

編輯

.PostedFile實際上是FileUpload控件的屬性。

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

這環節都有展示瞭如何將文件保存到磁盤的示例代碼。

+0

'fileUpload1.postedFile'? – Meensat 2012-02-17 20:56:58