我需要从我的node js express应用程序下载一个zip文件。这是我在服务器上用来将文件发送到浏览器的代码:
app.get('/files', async (req, res) => {
try {
const file = await service.getFile('http://localhost:8080/myapp/test.zip');
res.setHeader('Content-Type', 'application/octet-stream');
res.setHeader('Content-disposition', 'attachment; filename=test1.zip');
res.send(file);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
Web客户端(反应)的代码为:
import {Button} from 'semantic-ui-react';
const axios = require('axios');
const FileDownload = require('js-file-download');
const handleClick = async () => {
const {data} = await axios({
method: 'get',
url: 'http://localhost:4000/files',
headers: {'Authorization': 'XXXXXX'},
responseType: 'stream'
});
FileDownload(data, 'file.zip');
}
export default () => <div><Button onClick={() => handleClick()}>Download file</Button></div>
该zip文件已正确下载,我可以看到它的大小实际上是服务器中源文件的大小,但是当我尝试在Mac上解压缩时,我得到:Error(1),不允许进行操作。< / p>
有人可以告诉我我想念什么吗?
谢谢!