【发布时间】:2021-10-03 20:30:46
【问题描述】:
我正在向另一台服务器发出请求以下载 zip 文件,我现在所做的是向另一台服务器发出请求,该服务器以 zip 文件响应,我将其保存在我所在的服务器上并使用 res 发送。下载, 我想要的是能够下载该 zip 而不必将其保存在本地存储中
const form = new FormData();
form.append("Content-Type", "application/json");
form.append("instancia", req.file.buffer, req.file.originalname);
form.append("parametros", "XYZ);
const response = await axios.post("http://localhost:8080/archivos", form, {
headers: {
...form.getHeaders(),
},
responseType: "stream",
});
let headerLine = response.data.headers["content-disposition"];
let startFileNameIndex = headerLine.indexOf('"') + 1;
let endFileNameIndex = headerLine.lastIndexOf('"');
let filename = headerLine.substring(startFileNameIndex, endFileNameIndex);
response.data.pipe(FS.createWriteStream(__dirname + "/" + filename).on('close',function(){
res.setHeader('Content-Disposition', filename);
res.download(__dirname + "/" + filename);
}))
这真的可能吗?
【问题讨论】:
-
我不确定这是否是您要问的,但您当然可以将一个流通过管道传输到另一个流中,到达的位会立即发送出去并且永远不会在本地存储(除了暂时存储的小块在内存中)。
-
你知道我在哪里可以看到如何做到这一点吗?我是新手:(
标签: javascript node.js axios microservices multer