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