首页 > 解决方案 > 模拟文件拖入浏览器的拖动事件

问题描述

当您将文件从桌面拖到浏览器时,您可以使用“FileEntry”检索文件evt.dataTransfer.items[i].webkitGetAsEntry()

但是我很感兴趣是否可以通过编程方式创建此事件:使用拖放事件传输文件(blob 或使用 File 构造函数创建),以便接收处理程序也可以以完全相同的方式提取它们?

在我的场景中,目标也可能是其他站点,因此修改或任何不同的格式都是不可接受的。

标签: javascriptfiledragdata-transferdrop

解决方案


DataTransfer 构造函数,所以你可以很容易地创建一个,现在你只需要add()一个File对象到它的items列表中:

const dataTransfer = new DataTransfer();
const file = new File( [ "some content" ], "text-file.txt" );
dataTransfer.items.add( file );

const event = new DragEvent( "drop", { dataTransfer } );

ondrop = (evt) => {
  const dT = evt.dataTransfer;
  console.log( dT.items[ 0 ], dT.items[ 0 ].webkitGetAsEntry() );
};

dispatchEvent( event );


推荐阅读