Node.js 请求流管道重命名文件名

9
我将使用Node.js的请求模块将文件从远程服务器传输到用户浏览器。以下是我使用的代码:
expressjs_app.get("/file_url", function(req, res){
   request.get('remote_file_url').pipe(res);
});

一切都运作正常,我只想知道是否可以在浏览器中为用户更改文件名?

更新

我正在向用户发送远程文件以进行下载,当用户希望保存文件时,我希望文件名称与原始文件名称不同。

例如,如果远程文件为:http:// domain.com/file1.zip,我想将文件名更改为 http:// mydomain.com/myfile.zip


1
不太清楚你的问题。你需要从浏览器重命名文件吗?还是需要将文件名传递给get方法? - michelem
1
@Michelem,我正在将远程文件发送给用户进行下载,我希望当用户想要保存文件时,文件名与原始文件名不同。例如,如果远程文件是:domain.com/file1.zip,我想将其更改为mydomain.com/myfile.zip。 - user1086010
1个回答

9

您需要在响应中设置一个标题:

expressjs_app.get("/file_url", function(req, res){
   res.header('Content-Disposition', 'attachment; filename="new file name.pdf"');
   request.get('remote_file_url').pipe(res);
});

容易理解。祝你好运。

感谢它的工作,但是subscene.com的下载链接不起作用,例如下载链接:subscene.com/subtitle/download?mac=GbtlYOZoHuXhdzEjY4vd2cN7lDHHWIpZarWcT4l_j0Qinf7vwBHRBektYIfhg5G30 - user1086010
我猜他们正在检查cookie或者referrer。这个问题没有简单的解决方案。如果有帮助,请将该问题标记为答案。 - smremde
1
这并没有改变文件的名称。有什么建议吗? - Anish

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