javascript - 如何获取拖动文件的文件名(放置前)
问题描述
我想获取从浏览器外部拖动的文件的文件扩展名。浏览 StackOverflow 上的许多教程和问题/答案,我似乎找不到答案(或者我只是愚蠢地搜索正确的术语)。
我知道您可以在ondrop
事件中访问文件名,但我想根据用户在删除文件之前拖入我的应用程序的文件类型做出反应。必须有某种方式,因为 Webflow(用于构建响应式网站的网络应用程序)就是这样做的。根据文件类型,它会为您提供不同类型的元素。
我感谢朝着正确方向前进的每一个小线索
解决方案
如果您在拖动事件期间需要它,您唯一的选择是 MIME 类型,可以使用event.dataTransfer.items[n].type
. 在 drop 事件之前,文件的其余信息是不可访问的。
请注意此功能的浏览器兼容性,因为 Internet Explorer 和 Safari 都不支持此功能。
var dropReceiver = document.getElementById("dropReceiver");
dropReceiver.addEventListener('dragover', function(e) {
e.stopPropagation();
e.preventDefault();
e.dataTransfer.dropEffect = 'copy';
for(var i = 0; i < e.dataTransfer.items.length; i++)
{
console.log(e.dataTransfer.items[i].type);
}
});
#dropReceiver
{
padding: 100px 120px;
background: blue;
color: white;
font-size: 30px;
text-align: center;
}
<div id="dropReceiver">Drag On Me</div>
推荐阅读
- jira - Jira:非管理员可以导入多个项目吗?
- bash - 如何提取匹配两个以上模式的文件?
- bison - 如何处理一个 .y 文件中的野牛版本差异?
- c# - 从 GridView 中的文本框获取输入并将其作为参数传递
- ignite - 点燃 pod 的激活似乎是激活的,但并未真正激活
- angular - Angular8为每次运行测试不同的结果
- python - 根据两个表之间的匹配词计算值
- python - if 语句在 for 循环内部或外部的复杂性
- android - Xamarin Native 到 Forms 的转换
- laravel - Laravel Befriended Column 'id' in where 子句不明确