Мой код express.js очень прост:
app.get("/download", download);
и
export let download = async (req: Request, res: Response) => {
const file = "/tmp/my-file.zip";
res.download(file);
}
Мой код клиента также прост:
import axios from "axios";
const fileDownload = require("js-file-download");
axios.get("/download").then(response => {
fileDownload(response.data, "export.zip");
});
При загрузке сбраузер, файл поврежден, и я не могу его открыть.Оригинальный /tmp/my-file.zip
составляет 119506
байт.Странно, но export.zip
загружено 216980
байт.В данный момент я запускаю все локально, поэтому нет различий в операционной системе, которые могли бы объяснить это.
Почему размеры моего файла отличаются (что приводит к повреждению файла .zip) и как я могу это исправить?
Правка - это заголовки браузера:
accept-ranges: "bytes"
cache-control: "no-store, no-cache, must-revalidate, proxy-revalidate"
connection: "keep-alive"
content-disposition: "attachment; filename="my-file.zip""
content-length: "119506"
content-type: "application/zip"
date: "Thu, 14 Mar 2019 06:04:28 GMT"
etag: "W/"1d2d2-1697acd3f53""
expires: "0"
last-modified: "Thu, 14 Mar 2019 06:04:25 GMT"
pragma: "no-cache"
referrer-policy: "no-referrer"
surrogate-control: "no-store"
x-content-type-options: "nosniff"
x-frame-options: "SAMEORIGIN"
x-xss-protection: "1; mode=block"