0

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

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

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

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

4

5 回答 5

6

你不能。编写服务器端逻辑以应对丢失的上传。

于 2012-04-09T12:35:52.280 回答
0

您可以尝试使用隐藏字段,当用户从浏览中选择文件时,它也会填充到隐藏字段。然后,当他们上传时,您要么从隐藏字段中读取上传内容,要么使用 JS 将值替换回原始控件并从中读取。

于 2012-04-09T12:42:36.533 回答
0

这是你想要的吗...

您可以这样做,当用户选择文件时隐藏控件,如果他不同意,则仅在 div 中显示用户的路径,让他单击路径 div 旁边名为“选择另一个”的链接,因此当用户单击“选择另一个”切换刷新前一个值的相同 div

看到这个小提琴:http: //jsfiddle.net/T2D3X/

于 2012-04-09T13:57:04.237 回答
0

虽然布赖恩的建议有效(感谢布赖恩),但最终我们决定遵循服务器端处理方法。因为在无效文件的情况下,文件大小为零,所以响应是即时的,我们不需要等到文件上传,因为在这种情况下首先没有文件。

//check if file exists

                if (uploadCtrl.PostedFile.ContentLength > 0)
                {
                    uploadCtrl.PostedFile.SaveAs(fileNameWithPath);
                    uploadCtrl.Dispose();
                }
                else
                {
                    fileNameWithPath = "invalid";
                } 
于 2012-04-10T04:45:26.917 回答
0

您还可以使用以下方法:

验证前一:http: //jsfiddle.net/T2D3X/1/

一经验证:http: //jsfiddle.net/T2D3X/2/

在我重新修改之前,我的朋友发布了相同的答案。

第二个链接上有一些内部 jsfiddle 错误,您可以忽略它,我刚刚添加了更多功能来检查提交您发送的确切值。

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

于 2012-04-10T05:03:43.863 回答