【问题标题】:HTML Form FILE input behavior in Chrome vs. IEChrome 与 IE 中的 HTML 表单文件输入行为
【发布时间】:2013-07-23 01:37:40
【问题描述】:

如果我尝试从 IE 中的 HTML 输入对象获取文件名值,它会返回完整路径和文件名,但在 Chrome 中它只返回基本文件名。有没有办法让它返回完整的路径和文件名而不管浏览器,还是我必须跳到像 JQuery 这样的东西才能做到这一点?全能的上帝,我讨厌愚蠢的非标准网络“标准”。

代码示例:

<input type="file" name="fn" id="fn"/>

单击 IE 中的选择按钮并导航到“\server123\apps\folder1\setup.exe”之类的路径,并且在表单中显示并在 [submit] 处理程序事件中处理的结果也是“\server123\apps\folder1\setup.exe”。但是,在 Chrome 22.x 到 28.x 中运行相同的步骤时,它只显示“setup.exe”并通过 [submit] 处理程序传递它。有没有办法让它不管浏览器处理完整路径和文件名?

【问题讨论】:

标签: internet-explorer google-chrome browser user-input forms


【解决方案1】:

出于安全原因,Chrome 会清除路径信息。所以没有办法访问路径信息。

fileinput.onchange = function(e) {
  console.log(e.target.value); // Will be c:\fakepath
}

【讨论】:

  • 所以.... 获得完整路径的唯一方法是 (a) 将 JQuery 代码添加到组合中(目前都是 ASP,而不是 ASP.NET),或者 (b) 需要用户用 IE 访问页面。对吗?
  • Chrome 不会暴露完整路径,只会说 fakepath
【解决方案2】:

我终于解决了这个问题,以便应用程序检测用户正在使用的浏览器,并在不是 IE 时显示适当的消息。该消息只是建议用户将整个 UNC 路径复制并粘贴到注释框中。这完全是一个内网应用程序,所以没有任何东西暴露在外面。

【讨论】:

    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 2010-11-29
    • 2020-10-05
    • 2017-10-05
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多