IE 10为multipart提供了完整的路径名,如何只获取文件名

时间:2015-09-01 10:43:44

标签: java html file internet-explorer upload

我正在尝试使用以下脚本上传文件

<form name="multiform" id="multiform" method="post" enctype="multipart/form-data" >
<input type="file" size="60" accept="text/plain" id="myfileId" name="myfile"/><br/><br/>
<input type="button" value="Upload File" onclick="submitForm();" /></form>
</body></html>

我注意到文件属性有文件名和完整路径。

POST /xxx/yyy?uploaddata=1 HTTP/1.1
Host: abc.def.com
:
:
Content-Type: multipart/form-data; boundary=---------------------------22966874711757
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

-----------------------------22966874711757
Content-Disposition: form-data; name="myfile"; filename="**C:\my\file\path\TestFile.txt**"
Content-Type: text/plain

-- ………

我试过了

  1. 我已经通过禁用“在将文件上传到服务器时包含本地目录路径”尝试了它但是它不能用于多部分
  2. 我已阅读“https://stackoverflow.com/a/20537822/588079”,但我确定如何在我的HTML表单中使用此功能
  3. 如何解决此问题,以便文件上传适用于任何类型的浏览器?

1 个答案:

答案 0 :(得分:1)

禁用“将文件上传到服务器时包含本地目录路径”确实应该可行(我在IE10和IE11中也经过测试和验证)。您是否重新启动了IE(如关闭所有IE窗口,或者为了它,完全重新启动计算机)? 我通常只听到“本地互联网区域”的这个“问题”(默认情况下,此选项通常是为内部网应用程序的向后兼容性而启用的),因此请确保为相应的区域更改此​​设置!

IE Security settings

您没有描述此行为导致服务器端应用程序出现的问题,但假设您的服务器端文件上传处理程序是您的修改(与某些“黑盒”程序相反):
我的想法是记住你会收到带路径和不带路径的文件名,这样你就应该找到/\字符的最后一个索引,并丢弃所有字符(包括该字符)可能导致空字符串,因为最终,您不应该信任任何用户提供的输入(他们可以手动创建/破解请求标头)。)

我已经阅读的规范answer在javascript中有一个示例,您可能需要重新阅读其他信息。

因此,如果服务器端接收代码在您的控制之下,那么您将发布一个错误信息,并希望快速更新/修补/修复。