res.attachment()
指示网页浏览器或其他用户代理将此响应中发送的传出文件下载“另存为……”,而不是“打开”,并可以选择指定磁盘上新下载文件的名称。
具体来说,这将当前响应的“Content-Disposition”头设置为“attachment”。如果提供了filename
,则“Content-Type”将根据文件的扩展名自动设置(例如.jpg
或.html
),并且“Content-Disposition”头将设置为“filename=filename
”。
res.attachment([filename]);
此方法应在流式传输文件字节之前调用。
例如,如果您使用的是带有actions2的uploads hook
fn: async function({id}, exits) {
var file = await LegalDoc.findOne({ id });
if(!file) { throw 'notFound'; }
this.res.attachment(file.downloadName);
var downloading = await sails.startDownload(file.uploadFd);
return exits.success(downloading);
}
就是这样!当在浏览器中访问时,此操作下载的文件将保存为一个新文件(例如“Tax Return (Lerangis, 2019)”,而不是直接在浏览器本身中打开。
在幕后,res.attachment()
并没有做任何花哨的事情,它只是设置响应头
res.attachment();
// -> response header will contain:
// Content-Disposition: attachment
res.attachment('Tax Return (Lerangis, 2019).pdf');
// -> response header will contain:
// Content-Disposition: attachment; filename="Tax Return (Lerangis, 2019).pdf"
// Content-Type: application/pdf