javascript获取剪切板中的文件路径

如题,现在我复制了几个文件,我想在js中获取到这几个文件的本地路径,好用来批量上传文件。... 如题,现在我复制了几个文件,我想在js中获取到这几个文件的本地路径,好用来批量上传文件。 展开
 我来答
lhcatacgf
2016-06-28 · TA获得超过921个赞
知道小有建树答主
回答量:588
采纳率:100%
帮助的人:494万
展开全部

现代浏览器基于安全考虑,js 是无法直接读取剪贴板的。


唯一的可能性是,用户在可编辑元素中(如 contenteditable='true'
的 div)主动触发粘贴操作(如,通过 ctrl+V)。此时通过监听 paste 事件, 可以从event中获取到用户所粘贴的内容。


示例代码(支持现代浏览器):

<div id='editableDiv' contenteditable='true'>Paste here</div>
function handlePaste (e) {
    var clipboardData, pastedData;

    // 阻止粘贴
    e.stopPropagation();
    e.preventDefault();

    // 获取剪贴板信息
    clipboardData = e.clipboardData || window.clipboardData;
    // 获取剪贴板内容,getData 的参数是数据类型,这里为了获取文件路径是 'URL';如果想获取粘贴的文本,用 'Text'
    pastedData = clipboardData.getData('URL');

    // 处理信息,此时 pastedData 应该是 'file:///path/to/xxx'
    alert(pastedData);
}

document.getElementById('editableDiv').addEventListener('paste', handlePaste);



但是,与其费心思这样做,为何不直接做成拖动上传呢,应该更易于使用吧。



示例来源

http://stackoverflow.com/questions/2176861/javascript-get-clipboard-data-on-paste-event-cross-browser/2177059#2177059

更多追问追答
追问
我在IE11 中测试无效,当复制的内容是文本的时候成功触发了事件,但当复制的内容是文件的时候,不会触发事件。
追答
无解。按照规范,应该触发paste事件,然而现在各浏览器对ClipboardAPI的支持都不完善。现在IE11已经不被微软支持了,所以要不然限定你的用户用Chrome系浏览器,要不然用拖拽之类的上传文件方法(建议)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式