You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多文件浏览器拖拽仅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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:24:20