Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Node.js nodejs如何将文件夹压缩为zip文件并将其发送到vue客户端_Node.js_Vue.js_Axios_Adm Zip - Fatal编程技术网

Node.js nodejs如何将文件夹压缩为zip文件并将其发送到vue客户端

Node.js nodejs如何将文件夹压缩为zip文件并将其发送到vue客户端,node.js,vue.js,axios,adm-zip,Node.js,Vue.js,Axios,Adm Zip,通常“res.status(200).send(data)”我返回来发送数据 我用过adm拉链和阿奇弗 nodejs const loadReasearchReport = async (req, res) => { try { const resultId = req.query.id; const reportType = req.query.type; const result = await resultHeaderRepo.findById(req.qu

通常“res.status(200).send(data)”我返回来发送数据

我用过adm拉链和阿奇弗

nodejs

const loadReasearchReport = async (req, res) => {
try {
    const resultId = req.query.id;
    const reportType = req.query.type;

    const result = await resultHeaderRepo.findById(req.query.id);

    if (!result) {
        console.log(`Not Registered On Result DataBase :${reportType} ${resultId}`)
    }
    const filePath = result.path;
    
    const reportData = await reportGenerator.generateMicrobiomeReportData(filePath, TEMP_FOLDER, reportType);
    let create = await microbiomeReprter.createReportPDFKit(reportData, reportType);        
 
    
    let reportName = reportType.replaceAll(' ', '_');
    const fileName = reportName + '_' + result.resultNo + '.zip';
    //(admZip)
    let admZip = require('adm-zip');
    let zip = new admZip();
    // add local file
    zip.addLocalFolder(reportData.workSpace);

    let zipFileContents = zip.toBuffer();

    const fileType = 'application/zip';
    res.writeHead(200, {
        'Content-Disposition': `attachment; filename="${fileName}"`,
        'Content-Type': fileType,
    })
    
    return res.end(zipFileContents)
  
    // return res.status(200).send(reportType);

} catch (error) {
    console.log(error)
}
}

vuejs

“ReportData.workSpace”是本地存储的文件夹

zip文件将被下载,但打开时表示已损坏

我被困在这个问题上了

你能帮我吗

            let params = [];
            params = {
                "id": this.resultId,
                "type": this.reportType,
            };
            let request = {params : params};
            await this.$axios.get(this.$apiHost + "/results/research", request,{
                responseType: 'blob',
                headers:{
                        'Content-Type': 'application/json; application/octet-stream'
                },
            }).then((response) => {
                const url = window.URL.createObjectURL(new Blob([response.data]),{
                    type:'application/zip'
                });
                console.log(url)
                const link = document.createElement('a');
                link.href = url;
                link.setAttribute('download', 'file.zip'); //or any other extension
                document.body.appendChild(link);
                link.click();
                link.remove();
                return false;

            });