C# 文件上传链接在页面重新加载时清除,为什么?

C# 文件上传链接在页面重新加载时清除,为什么?,c#,asp.net,html,vb.net,file-upload,C#,Asp.net,Html,Vb.net,File Upload,我正在使用ASP.net2.0和VB.NET 我有一张用户登记表。 在该表单上,用户提供其所有联系方式,他可以使用ASP.net中的普通文件上载控件上载图像 这是我的问题。 如果页面上出现任何错误,那么我会给用户一条错误消息,说明他遗漏了什么或出了什么问题。但当这种情况发生时,页面会刷新。现在,指向用户选择的图像的链接消失了。现在,当用户修复错误时,他认为自己正在上载图片,但他从未这样做,因为当页面重新加载时,它删除了文件上载控件中指向其图像的链接 注意,用户不必上传图像,因此当字段为空时不会出

我正在使用ASP.net2.0和VB.NET

我有一张用户登记表。 在该表单上,用户提供其所有联系方式,他可以使用ASP.net中的普通文件上载控件上载图像

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

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


有人知道我必须做什么吗?

出于安全考虑,没有人可以用HTML在文件字段中写入值。您可以上载文件,然后报告错误,并为用户提供取消上载的方法。编辑:bobince在另一个答案中更详细地描述了这一点。

我认为你能做的不多。在过去的几年里,浏览器已经锁定了文件表单字段,以防止驱动器上传。我将有一个单独的上传照片的过程。

这种行为是出于设计。这是浏览器施加的一种安全限制,因此所有文件只能通过用户的显式操作从用户的计算机上载

如果表单提交过程中出现问题,您应该通知用户重新上传其文件。这是正确的做法。将其视为一项交易,要么全有,要么全无

有人知道我必须做什么吗

两种常用方法:

添加客户端JavaScript表单验证,这样对于大多数人来说,在提交表单之前,服务器端会弹出一个错误,而不是稍后,此时上传将丢失

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