我正在尝试下载文件,该文件由maner中的服务器生成,如下所示:
public downloadZip(): void{
const link = document.createElement('a');
link.setAttribute(
'href',
`/srv/genZip?id=${this.id}`
);
link.setAttribute('download', '123.zip');
link.click();
}
但它不起作用。。。有人知道我哪里错了吗?
你不能完全驱动这个过程,你只能向浏览器提供提示。
浏览器有几个不同的地方,可以查找下载的文件名:
-
服务器的
Content-Disposition
标头,它可以包括文件名,例如Content-Disposition: attachment; filename="123.zip"
或Content-Disposition: attachment; filename*="123.zip"
-
download
属性
据我所知,没有规范说明哪一个应该有偏好,所以为了最大限度地提高代码工作的浏览器,我会在两者中指定相同的名称。
强调这一点的是,MDN对上述Content-Disposition
的报道中有一条注释:
注意:Chrome和Firefox 82及更高版本,将HTML
<a>
元素的download
属性优先于Content-Disposition: inline
参数(对于同源URL(。早期的Firefox版本会对标题进行优先级排序,并以内联方式显示内容。
因此,如果您的服务器返回Content-Disposition: inline
,并且您看到资源以内联方式加载(而不是下载(,则您可能正在使用Firefox的旧副本或执行相同操作的浏览器。