IE的<input type ='file'>提供完整路径,仅需要文件名

ser*_*nni 34 upload internet-explorer file input path

从IE浏览器执行上传时,我的后端(org.apache.commons.fileupload)获取完整的文件路径.

对于其他非IE浏览器,它获取文件名,因为安全性,它是可以的.

如何从IE的输入中获取文件名

是否可以在UI上进行,因为我认为编辑apache lib并不是很优雅.

也许,输入字段存在一些参数?

我可以在服务器上做,但对UI方法感兴趣.

Ale*_*lex 46

下面还有一个IE选项:

  • 互联网选项
  • 安全选项卡
  • 在"Internet"或"Intranet"中单击"自定义级别"
  • 在"安全设置"中向下滚动,直至看到"将文件上载到服务器时包含本地目录路径"并将其禁用.
  • 单击Internet选项窗口上的确定并刷新.

亚历克斯

  • 有点官方参考:https://msdn.microsoft.com/en-us/library/ms535128%28v=vs.85%29.aspx (2认同)

小智 35

在服务器端试试这个

Path.GetFileName(file.FileName)


Que*_*tin 22

文件输入的要点是提供文件.随附的名称是"无论浏览器供应商使用什么",它们都不能保证与文件系统上的文件名有任何关系.

您无法更改浏览器发送的内容.

如果您要使用浏览器发送的名称,那么您需要确保它对于您要使用它做的任何事情都是有效的(例如,确保它只包含文件系统中文件名中允许的字符) .这使得它必须在服务器上处理(就像任何其他客户端提供的数据一样).

  • 好的,谢谢,似乎只接受服务器解决方案,我只是阅读apache建议:http://commons.apache.org/fileupload/faq.html#whole-path-from-IE (3认同)

pll*_*lee 17

如果您通过Xhr上传FormData,实际上有一个非常简单的解决方法.该FormData.append API允许你在文件名作为第三个参数传递.

const formData = new FormData();
//explicitly setting the file name works in IE 11
formData.append('file', file, file.name);
Run Code Online (Sandbox Code Playgroud)