我正在尝试从 Django api 下载 zip 文件并让用户下载它。 zip 中有两个 .csv 文件。

我可以单独下载单个 .csv 文件,但是当我尝试下载 zip 并解压缩时,出现 zip 已损坏的错误。为了进行健全性检查,我可以通过 postman 发送请求。我能够使用它成功下载并解压缩文件。

这是我的代码片段:

        axios 
        .post('http://0.0.0.0:8000/sheets/', data, 
            { 
                headers: { 
                    'Content-Type': 'multipart/form-data', 
                    'responseType': 'arraybuffer' 
                } 
            }) 
        .then(res => { 
            console.log(res.data) 
            const disposition = res.request.getResponseHeader('Content-Disposition') 
            var fileName = ""; 
            var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; 
            var matches = filenameRegex.exec(disposition); 
            if (matches != null && matches[1]) { 
                fileName = matches[1].replace(/['"]/g, ''); 
            } 
            let blob = new Blob([res.data], { type: 'application/zip' }) 
 
            const downloadUrl = URL.createObjectURL(blob) 
            let a = document.createElement("a");  
            a.href = downloadUrl; 
            a.download = fileName; 
            document.body.appendChild(a); 
            a.click(); 

请您参考如下方法:

要添加到 btbam91 的回复:responseType 必须是配置的一部分。在上面的例子中:

 axios 
    .post('http://0.0.0.0:8000/sheets/', data, 
        { 
            responseType: 'arraybuffer', 
            headers: { 
                'Content-Type': 'multipart/form-data', 
            } 
        }) 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!