【问题标题】:Javascript: Is there a way to get the filename of the dragged-in file?Javascript:有没有办法获取拖入文件的文件名?
【发布时间】:2011-05-17 03:25:28
【问题描述】:

当用户拖入文件时,Javascript 中是否有办法检测其文件名 onDragEnter(不是在上传后)?

【问题讨论】:

标签: javascript drag-and-drop filenames


【解决方案1】:

并非每个浏览器都支持将文件拖到文件输入端(OS X 上的 FF4 肯定不支持),但您可以change 事件中检查文件输入的值,这应该提供跨浏览器的统一结果。

根据浏览器的不同,你可以检查的值

<input type="file" id="foo" />

像这样:

// vanilla JS
var filename = document.getElementById('foo').value;

// jQuery
var filename = $('#foo').val();

您可以在 change 侦听器中执行此操作,如下所示(下面 jsFiddle 中的 jQuery 示例):

function alertFileName()
{
    alert(this.value);
}

var input = document.getElementById('foo');

// not IE friendly; use `attachEvent` instead
input.addEventListener('change', alertFilename, false);

如果您上传一个名为bar.txt 的文件,filename 将是:

  • 'C:\fakepath\bar.txt'(铬)
  • 'bar.txt'(Firefox 4、Safari)
  • ??? (IE)

我目前不准备测试 IE;随时try it yourself

【讨论】:

  • 我认为 Safari 也是如此。它一定是 WebKit 的东西。
  • 不,Safari 匹配 FF4。对于 Apple 的浏览器来说,返回类似 Windows 的文件路径也绝对不是 Mac 的事情
  • 嗯,不知道我当时为什么这么想。 OS X 上的 Chrome 仍然返回 Windows 风格的路径有点奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 2021-10-23
  • 2020-09-29
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多