Я пытаюсь отправить клиенту файл PDF, размещенный на сервере, для загрузки из браузера.Я использую экспресс и узел js.
Код на сервере:
app.get('/files', async (req, res) => {
res.sendFile(__dirname + '/boarding-pass.pdf');
});
Код на клиенте (реагирует на js):
const handleClick = async () => {
const response = await axios({
url: 'http://localhost:4000/files',
// url: '/static/boarding-pass.pdf',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/pdf',
'Authorization': 'Basic d29vZG1hYzpXb29kbWFjOTI3IQ=='
},
responseType: 'arraybuffer',
//responseType: 'blob', // important
});
console.log('response', response);
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'bp.pdf');
document.body.appendChild(link);
link.click();
}
export default () => <div><Button onClick={() => handleClick()}>Download file</Button></div>
Если я пытаюсь открыть файл на сервере (я на Mac), файл открывается правильно, и я вижу содержимое.Однако, когда я загружаю файл из браузера, он каким-то образом поврежден или обрезан, или ему что-то не хватает, потому что я не могу открыть его, и я получаю сообщение о том, что это недопустимый файл, хотя я вижу, чтоРазмер обоих файлов в файловой системе одинаков, но если я проверяю двоичные файлы с помощью утилиты, я вижу, что оба файла различаются ..
Может кто-нибудь сказать мне, что мне не хватает, или предоставить небольшую рабочуюпример?
Спасибо