Javascript 节点js从服务器提供文件体并在浏览器中下载
我有一个文件存储库,当我从浏览器调用它时,它会自动下载文件,这很好。 但我想在我的服务器上执行此请求,然后将文件结果提供给浏览器。下面是来自我的服务器的get请求的示例Javascript 节点js从服务器提供文件体并在浏览器中下载,javascript,node.js,file,express,Javascript,Node.js,File,Express,我有一个文件存储库,当我从浏览器调用它时,它会自动下载文件,这很好。 但我想在我的服务器上执行此请求,然后将文件结果提供给浏览器。下面是来自我的服务器的get请求的示例 downloadFile(req , res , next) { let options = { url: 'url to my file repo', }; request(options, function (err, resp, body) { if (err) {
downloadFile(req , res , next) {
let options = {
url: 'url to my file repo',
};
request(options, function (err, resp, body) {
if (err) {
res.status(500).send("");
return
}
for (const header in resp.headers) {
if (resp.headers.hasOwnProperty(header)) {
res.setHeader(header, resp.headers[header]);
}
}
resp.pipe(res);
})
}
请求工作正常,当我从浏览器访问服务器时,它开始下载文件。除了一件事,文件无法打开外,一切似乎都正常此文件格式无法打开,图像播放器告诉我(例如,如果文件是图像)。
问题出在哪里,是我从服务器提供文件的方式吗?
先谢谢你。我浪费了很多时间,无法找到解决方案。因为您可能希望发送的是请求的正文(例如,图像的数据)。 因此,与相应管道(res)不同:
使用浏览器的开发人员模式检查服务器和浏览器之间传递的网络消息。请尝试不要设置
res
标题。@MukeshSharma我尝试了很多标题变体,但没有一个有帮助。此响应也是如此。它下载文件,文件大小也正确,但您无法打开它。
res.send(body)