多文件浏览器拖拽仅Firefox可用,Chrome/Edge失效问题求助
多文件拖拽上传在Chrome/Edge中异常的问题
我用JavaScript实现了多文件批量拖拽上传功能,在Firefox中运行正常,但在Chrome和Microsoft Edge里无法正常工作。这两款浏览器的报错信息为:Failed to load resource: the server responded with a status of 404 ()
我能看到event.dataTransfer.items.length显示的文件数量是正确的,但Chrome/Edge仅能上传第一个文件后就停止运行。
相关代码
HTML部分
<div id="div0" ondrop="DropFiles(event)" ondragover="allowDropFiles(event)" style="height:100px; width:100px; background-color:red" title="Drop bilag her">
JavaScript代码
function allowDropFiles(event) { event.preventDefault(); } function readFile(file) { return new Promise((resolve, reject) => { var fr = new FileReader(); fr.onload = () => { resolve(fr.result) }; fr.onerror = reject; fr.readAsDataURL(file); }); } async function DropFiles(event) { event.preventDefault(); var vVoucherArray = []; var vFileNameArray = []; var vFileContentArray = []; voucherNo = event.target.id.substring(4, event.target.id.length); if (event.dataTransfer.items) { for (var i = 0; i < event.dataTransfer.items.length; i++) { if (event.dataTransfer.items[i].kind === "file") { const file = event.dataTransfer.items[i].getAsFile(); if (file != null) { vVoucherArray.push(voucherNo); vFileNameArray.push(file.name); vFileContentArray.push(await readFile(file)); } } } } else { for (var i = 0; i < event.dataTransfer.files.length; i++) { const file = event.dataTransfer.files[i]; vVoucherArray.push(voucherNo); vFileNameArray.push(file.name); vFileContentArray.push(await readFile(file)); } } }
补充的代码片段
function readFile(file) { return new Promise((resolve, reject) => { var fr = new FileReader(); fr.onload = () => { resolve(fr.result) }; fr.onerror = reject; fr.readAsDataURL(file); }); } async function DropFiles(event) { event.preventDefault(); var vVoucherArray = []; var vFileNameArray = []; var vFileContentArray = []; voucherNo = event.target.id.substring(4, event.target.id.length); if (event.dataTransfer.items) { for (var i = 0; i < event.dataTransfer.items.length; i++) { if (event.dataTransfer.items[i].kind === "file") { const file = event.dataTransfer.items[i].getAsFile(); if (file != null) { vVoucherArray.push(voucherNo); vFileNameArray.push(file.name); vFileContentArray.push(await readFile(file)); } } } doUploadFile(vVoucherArray, vFileNameArray, vFileContentArray); } }
我的问题是:这是两款浏览器的Bug,还是需要调整代码来实现该功能?恳请各位提供帮助。
内容的提问来源于stack exchange,提问作者Michael Eriksen
相关产品推荐
相关产品推荐

