asp:在回发期间上传发布的文件丢失

时间:2010-03-29 19:01:33

标签: asp.net file-upload postback viewstate

我使用asp:upload控件上传图像,并使用postingfile属性插入数据库的路径。在我的表单中,我有一个autopostback = true的下拉列表,用户可以选择一个主题来填充类别的复选框列表。在该回发期间,postfile值正在丢失,经过一些研究后,我发现出于安全原因,发布的文件值未在viewstate中维护。有没有人发现如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

这就是它的工作原理。 intput type =“file”的值从不用于解析HTML页面。这是一个巨大的安全风险,因此没有现代浏览器可以让他们“保留”价值。所以在ASP.NET中,每次回发都“失去”了价值。

在输入控件中包含文件的任何回发中,请务必将值保存在稍后可以获取的位置。

或者,不要设计使用文件上传的表单来进行多次回发。也许考虑在UpdatePanel中包装下拉列表和相关控件,这样就不会清除文件上传。

答案 1 :(得分:1)

除了用户交互之外,输入文件元素的value属性根本无法设置。这就是它的工作方式,并且由于安全问题而不会改变。也就是说,您的解决方案是消除回发。

答案 2 :(得分:0)

我会尝试通过JavaScript / AJAX加载复选框列表,可能会将复选框列表的值保存到隐藏字段,这样我就可以在回发中保留这些值。

这可能不太理想,但如果您想要在没有回发的情况下完成所有操作,那么在某些时候您将不得不使用JavaScript。

答案 3 :(得分:0)

您可以在AjaxControlToolkit中尝试AsynchFileUpload控件,但除非您将文件保存到临时文件夹并从该临时文件夹加载文件列表,否则标准文件上载没有解决方法。