我有一个带有 5 个 HTML 文件输入控件的 asp.net 表单,带有 runat=server 和一个提交按钮。用户选择文件并单击提交按钮后,文件将上传到服务器。
问题是 HTML 文件输入控件是可编辑的,用户可以在从浏览按钮中选择文件后编辑路径。
如果他输入了一个无效的文件路径,则该文件不会上传,因为它不存在。
如何阻止用户手动更改文件路径?我试图使控件只读,但它也禁用了浏览按钮。
我有一个带有 5 个 HTML 文件输入控件的 asp.net 表单,带有 runat=server 和一个提交按钮。用户选择文件并单击提交按钮后,文件将上传到服务器。
问题是 HTML 文件输入控件是可编辑的,用户可以在从浏览按钮中选择文件后编辑路径。
如果他输入了一个无效的文件路径,则该文件不会上传,因为它不存在。
如何阻止用户手动更改文件路径?我试图使控件只读,但它也禁用了浏览按钮。
你不能。编写服务器端逻辑以应对丢失的上传。
您可以尝试使用隐藏字段,当用户从浏览中选择文件时,它也会填充到隐藏字段。然后,当他们上传时,您要么从隐藏字段中读取上传内容,要么使用 JS 将值替换回原始控件并从中读取。
这是你想要的吗...
您可以这样做,当用户选择文件时隐藏控件,如果他不同意,则仅在 div 中显示用户的路径,让他单击路径 div 旁边名为“选择另一个”的链接,因此当用户单击“选择另一个”切换刷新前一个值的相同 div
看到这个小提琴:http: //jsfiddle.net/T2D3X/
虽然布赖恩的建议有效(感谢布赖恩),但最终我们决定遵循服务器端处理方法。因为在无效文件的情况下,文件大小为零,所以响应是即时的,我们不需要等到文件上传,因为在这种情况下首先没有文件。
//check if file exists
if (uploadCtrl.PostedFile.ContentLength > 0)
{
uploadCtrl.PostedFile.SaveAs(fileNameWithPath);
uploadCtrl.Dispose();
}
else
{
fileNameWithPath = "invalid";
}
您还可以使用以下方法:
验证前一:http: //jsfiddle.net/T2D3X/1/
一经验证:http: //jsfiddle.net/T2D3X/2/
在我重新修改之前,我的朋友发布了相同的答案。
第二个链接上有一些内部 jsfiddle 错误,您可以忽略它,我刚刚添加了更多功能来检查提交您发送的确切值。
如果您觉得它有帮助,请告诉我们;)谢谢!