gpt4 book ai didi

node.js - Nodejs写入文件

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:57 26 4
gpt4 key购买 nike

我的 nodejs 有问题。我现在正在制作一个服务器来提供用户请求的文件。我做了什么:

  • 我找到了路径
  • 查找文件 (fs.exists())
  • 如果路径是文件,则获取流
  • stream.pipe(响应)

现在的问题是我希望用户下载该文件,但是如果我编写一个 .txt 文件,管道方法会在浏览器中写入该文件的内容...所以,我尝试使用 .pdf,但在这种情况下,网页继续加载并且没有任何反应...有人可以帮忙吗?

if(exists) {

response.writeHead(302, {"Content-type":'text/plain'});

var stat = fs.statSync(pathname);

if(stat.isFile()) {
var stream = fs.createReadStream(pathname);
stream.pipe(response);
} else {
response.writeHead(404, {"Content-type":'text/plain'});
response.end()
}


//response.end();

} else {
response.writeHead(404, {"Content-type":'text/plain'});
response.write("Not Found");
response.end()
}

最佳答案

好吧,在您的 if 情况下,您始终将 Content-Type header 设置为 text/plain,这就是您的浏览器显示文本的原因文件内联。对于您的 PDF,text/plain 是错误的,它应该是 application/pdf,因此您需要动态设置类型。

如果您希望浏览器强制下载,请设置以下 header :

Content-Disposition: attachment; filename="your filename…"
Content-Type: text/plain (or whatever your content-type is…)

基本上,这就是 Express's res.download函数内部也做得很好,所以这个函数也值得一看。

关于node.js - Nodejs写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19590426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com