Мне нужно скачать zip-файл из моего приложения js express.Это код, который я использую на сервере для отправки файла в браузер:
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 });
}
});
Код веб-клиента (React):
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, я получаю: Ошибка (1), Операция не разрешена.
Может кто-тоскажи мне, что мне не хватает?
Спасибо!