如何阻止用户在HTML文件输入控件中手动编辑文件路径?

时间:2012-04-09 12:34:02

标签: c# javascript asp.net

我有一个带有5个HTML文件输入控件的asp.net表单,其中包含runat = server和一个提交按钮。用户选择文件并单击提交按钮后,文件将在服务器上传。

问题是HTML文件输入控件是可编辑的,用户可以在他从浏览按钮中选择文件后编辑路径。

如果他输入了无效的文件路径,则该文件不会上传,因为它不存在。

如何阻止用户手动更改文件路径?我试图让控件只读,但它也禁用了浏览按钮。

5 个答案:

答案 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错误,你可以忽略它,我刚刚添加了更多功能来检查提交你正在发送的值。

如果您觉得它有用,请告诉我们;) 谢谢!