如何在Node.js服务端下载存储在服务器中的PDF文件到客户端?

5
如何使用node.js允许客户端下载存储在服务器上的pdf文件。
请有经验的开发者协助编写代码。
fs.readFile('temp/xml/user/username.pdf',function(error,data){
    if(error){
       res.json({'status':'error',msg:err});
    }else{
       res.json({'status':'ok',msg:err,data:data});
    }
});
2个回答

8

Express有两个方便的方法可用于发送文件。它们的区别在于:


2
+1 啊,他在使用 Express。唉,我不知道它的方法,而且他也没有在任何地方提到 Express。 - chris-l
'res'是什么意思,我该如何获取它? - binaryBigInt
@binaryBigInt res 是一个 Express Response 对象,是 Node 自己的 ServerResponse 对象的扩展。它作为参数由 Express 提供给 路由处理程序中间件 使用。 - Jonathan Lonowski

5
发送正确的 MIME 类型,然后再发送 PDF 的内容。
fs.readFile('temp/xml/user/username.pdf',function(error,data){
    if(error){
       res.json({'status':'error',msg:err});
    }else{
       res.writeHead(200, {"Content-Type": "application/pdf"});
       res.write(data);
       res.end();       
    }
});

我假设res是你的响应对象。


啊,但是你正在使用Express。请使用Jonathan的答案。

我尝试了两种代码,但都没有起作用。我通过ajax进行api调用,这是问题所在吗?因为ajax的响应包含pdf文件的字符串数据,我尝试使用Blob Builder将响应数据转换为Blob数据,并使用FileSaver将文件保存到本地,但文件存储为空,其中没有数据(存储了空的pdf)。是否有其他方法可以解决这个问题...请帮帮我。 - sridhar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接