Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在拖放文件之前检查其文件类型?_Javascript_Electron - Fatal编程技术网

Javascript 是否可以在拖放文件之前检查其文件类型?

Javascript 是否可以在拖放文件之前检查其文件类型?,javascript,electron,Javascript,Electron,我有一个电子应用程序,我希望用户能够将文件拖动到其中。我只希望他们能够拖动某些类型的文件(例如仅.xlsx和.docx),因此我希望在他们拖放文件之前发出警告。不幸的是,我看不到一种方法来知道他们当前正在拖动的文件的类型 一些代码 const dragElem=document.body; dragElem.addEventListener('drag',()=>{ log('drag'); }); dragElem.addEventListener('dragstart',()=>{ con

我有一个电子应用程序,我希望用户能够将文件拖动到其中。我只希望他们能够拖动某些类型的文件(例如仅.xlsx和.docx),因此我希望在他们拖放文件之前发出警告。不幸的是,我看不到一种方法来知道他们当前正在拖动的文件的类型

一些代码

const dragElem=document.body;
dragElem.addEventListener('drag',()=>{
log('drag');
});
dragElem.addEventListener('dragstart',()=>{
console.log('dragstart');
});
dragElem.addEventListener('dragenter',(e)=>{
控制台日志(“dragenter”);
控制台日志(e);
展示文件(e);
});
dragElem.addEventListener('dragexit',()=>{
console.log('dragexit');
});
dragElem.addEventListener('dragover',(e)=>{
e、 预防默认值();
console.log('dragover');
控制台日志(e);
展示文件(e);
返回false;
});
dragElem.addEventListener('dragleave',()=>{
console.log('dragleave');
返回false;
});
dragElem.addEventListener('dragend',()=>{
console.log('dragend');
返回false;
});
dragElem.addEventListener('drop',(e)=>{
console.log('drop');
e、 预防默认值();
展示文件(e);
返回false;
});
函数显示文件(e){
for(设f/e.dataTransfer.types){
log('您在此处拖动的类型:',f);
}
对于(让f为e.dataTransfer.items){
log('您在此处拖动的项目:',f.kind,f.type);
}
for(让f为e.dataTransfer.files){
log('您在此处拖动的文件:',f.path);
}
}

在这里拖动一些东西
不知道电子,因此将无法提供帮助,但您最好在dragenter中进行检查,而不是在您将获得的众多dragovers中进行检查。此外,由于根据规范,您无法从dragstart和drop以外的其他事件的拖动数据存储中访问数据,因此填充UA的mime类型注册表可能确实是最佳解决方法。这可能很有用: