2010-03-29 80 views
0

我正在使用asp:upload控件上傳圖像,並使用postingfile屬性將路徑插入數據庫。在我的表單中,我有一個autopostback = true的下拉列表,用戶可以選擇一個主題來填充類別的複選框列表。在回發期間,發佈的文件值正在丟失,經過一些研究後,我發現由於安全原因,發佈的文件值沒有在視圖狀態下維護。有沒有人發現如何解決這個問題?asp:upload postfile在回發期間丟失

+0

回傳是一切邪惡的根源! – 2010-03-29 19:31:44

回答

3

這就是它的工作原理。解析HTML頁面時絕不會使用intput type =「file」的值。這是一個巨大的安全風險,所以現代瀏覽器不會讓他們「保留」價值。所以在ASP.NET中,每個回傳「失去」價值。

在輸入控件中包含文件的任何回傳中,請務必將值保存在稍後可以獲取的某處。

或者不要設計一個使用文件上傳來進行多次回傳的表單。也許可以考慮將你的下拉列表和相關控件包裝在UpdatePanel中,這樣文件上傳不會被清除。

1

我會嘗試通過JavaScript/AJAX加載複選框列表,可能會將複選框列表的值保存到隱藏字段,以便我可以在回發中保留這些值。

這可能不是理想的,但如果你想這樣做沒有回傳,在某些時候你將不得不使用JavaScript。

1

您可以嘗試AjaxControlToolkit中的AsynchFileUpload控件,但是除非將文件保存到臨時文件夾並從該臨時文件夾加載文件列表,否則沒有標準文件上傳的解決方法。

2

輸入文件元素的值屬性根本不能由用戶交互除外設置。這是它的工作方式,並且這不會因安全問題而改變。也就是說,你的解決方案是消除回傳。