2012-02-17 52 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