页面重新加载时文件上载链接会清除,为什么?

时间:2009-04-11 12:47:49

标签: c# asp.net html vb.net file-upload

我在VB.NET中使用ASP.net(2.0)。

我有一个用户注册表。 在该表格上,用户提供了他所有的联系方式,他可以在ASP.net中上传具有普通文件上传控件的图像。

这是我的问题。
如果页面上出现任何问题,我会向用户提供一条错误消息,说明他遗漏了什么或出了什么问题。但是当页面确实发生时页面会刷新。现在,用户选择的图像链接已消失。现在,当用户修复他的错误时,他认为他正在上传图片,但他从未这样做,因为当页面重新加载时,它删除了文件上传控件中的图像链接。

注意,用户不必上传图像,因此当字段为空时不会出现错误。

任何人都知道我必须做什么?

4 个答案:

答案 0 :(得分:4)

  

任何人都知道我必须做什么?

两种常用方法:

  1. 添加客户端(JavaScript)表单验证,以便对于大多数人来说,错误将在之前弹出他们提交表单而不是稍后,在服务器端,到那时上传将会丢失。

  2. 为每个表单实例提供唯一的ID。在具有错误的表单上上载文件时,将该文件存储在服务器上并在数据库中记录具有该ID的表单具有附加文件。在第二次机会表单上,将ID包含为隐藏字段,并直观地指示已记住上载的文件。提交时,拖出记住的文件并将其附加到新提交。

答案 1 :(得分:3)

我认为你无能为力。过去几年中,浏览器已锁定文件表单字段以防止偷渡式上传。我会有一个单独的上传照片的过程。

答案 2 :(得分:3)

这种行为是设计的。这是浏览器强加的安全限制,因此只有通过明确的操作才能从用户的计算机上传所有文件。

如果在表单提交过程中出现问题,您应该让用户重新上传他/她的文件。这是正确的方法。将其视为交易(全部或全部)。

答案 3 :(得分:1)

出于安全原因,没有人可以在HTML中的文件字段中写入值。您可以上传文件,然后报告错误,并为用户提供取消上传的方法。编辑:这是另一个答案中更详细的内容。