javascript - 模拟文件拖入浏览器的拖动事件
问题描述
当您将文件从桌面拖到浏览器时,您可以使用“FileEntry”检索文件evt.dataTransfer.items[i].webkitGetAsEntry()
但是我很感兴趣是否可以通过编程方式创建此事件:使用拖放事件传输文件(blob 或使用 File 构造函数创建),以便接收处理程序也可以以完全相同的方式提取它们?
在我的场景中,目标也可能是其他站点,因此修改或任何不同的格式都是不可接受的。
解决方案
有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 );
推荐阅读
- javascript - 如何使用文件流将两个或多个图像存储在服务器文件夹中
- python - 从 API 端点请求时找不到路径
- amazon-web-services - Route 53 cloudflare 流量管理器
- c - C - C 文件不会正确计数,它是 1 短
- javascript - javascript中的迭代只返回第一个元素
- android - 在另一个类的一个活动中更改“AutoCompleteTextView”的值
- php - PHP - 无法回显变量 $error 和 $successMessage
- swiftui - 在 SwiftUI App 结构中使用 @StateObject 属性包装器的原因?
- javascript - 调整大小并更改为灰度
- reactjs - 有没有办法提高 IE 11 中的 MutationObserver 性能?