【发布时间】:2012-03-09 05:52:06
【问题描述】:
我有 3 个FileUpload 控件。当页面PostBack 时,他们会丢失内容。当我单击一个按钮以显示一些隐藏的控件时,该页面被回发。
在不使用session 的情况下,我能做些什么来保留它们的内容?
【问题讨论】:
标签: c# asp.net file-upload postback
我有 3 个FileUpload 控件。当页面PostBack 时,他们会丢失内容。当我单击一个按钮以显示一些隐藏的控件时,该页面被回发。
在不使用session 的情况下,我能做些什么来保留它们的内容?
【问题讨论】:
标签: c# asp.net file-upload postback
由于 HTTP/Forms 的工作方式,确实没有办法解决这个问题。该文件将在第一次发布到服务器时提交。您也可以将文件字节存储在 ViewState 中,但回发速度会很慢。您的选择是不执行回发并使用 javascript 或其他替代方法来获得相同的功能或将文件存储在服务器上的某个位置(例如:会话、临时文件夹、数据库)。
【讨论】:
将FileUpload控件的内容保存在服务器端。或者你可以在 html 页面中渲染它并使用 CSS 隐藏它
【讨论】:
这实际上与安全有关。想象一下通过文件上传访问一个站点,并且路径预先填充了“c:\Users\Meensat\passwords.docx”之类的内容。你点击提交,他们就有你的密码。
您可以在回发时执行的操作是使用.PostedFile 属性检查文件,如果存在,则将其保存到临时文件中。在 Session 中,存储对临时文件的引用、文件名等。
编辑
.PostedFile 实际上是FileUpload 控件的一个属性。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.postedfile.aspx
该链接的示例代码显示了如何将文件保存到磁盘。
【讨论】: