小编Kai*_*Kai的帖子

如何使用Javascript将文件添加到现有的dataTransfer对象中

假设:可以访问file://的本地HTML/Javascript网页

在可拖动HTML元素的拖动开始时,在事件处理函数中dragStart(e),如何添加File对象以使其被识别为文件并最终在dataTransfer.files列表中?

例如:

function dragStart(e){
    var file = getSomeFileObjFromSomewhere();
    e.originalEvent.dataTransfer.effectAllowed = "all";
    e.originalEvent.dataTransfer.setData("file", file);

    console.log("\nFiles:");
    i = 0;
    var files = e.originalEvent.dataTransfer.files,
    len = files.length;
    for (; i < len; i++) {
        console.log("\nIndex: " + i + "\nFilename: " + files[i].name);
        console.log("Type: " + files[i].type);
        console.log("Size: " + files[i].size + " bytes");
        console.dir(files[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

具体来说,它需要在Chrome/Chromium上运行.并且,我们可以假设该文件存在于本地驱动器上.基本上,当文件从Windows资源管理器拖动到可放置元素的HTML页面时,我想要相同的数据.

我知道这存在于Chrome中:

e.originalEvent.dataTransfer.setData("DownloadURL", fileType + ":" + name + ":" + filePath);
Run Code Online (Sandbox Code Playgroud)

下载文件.但这不是我想要的,因为我想假设这是一个现有文件,并且必须访问原始文件.

javascript drag-and-drop data-transfer file data-transfer-objects

11
推荐指数
2
解决办法
3157
查看次数