【发布时间】:2015-12-18 22:03:12
【问题描述】:
我有一个 PDF 文件,可以在除 Firefox/Safari 之外的所有浏览器上下载。它在浏览器窗口中打开它,而不是下载文件。我的站点在 node.js 之上运行并托管在 Azure 中。用户下载的文件来自 Azure blob 存储,所以我怀疑这可能是 CORS 问题。
这是我下载的客户端代码:
<a href="{{fileURL}}" class="btn btn-default" download="myfile.pdf">Download File</a>
这是服务器端代码:
$scope.fileURL = 'https://myblob.blob.core.windows.net/8282020/myfile.pdf';
更新:我可以通过根据下面的帮助在 Azure 中设置 blob 属性来添加内容配置,它显示配置为“附件”,但在 FireFox/Safari 中它仍然是在浏览器中打开。由于 Azure Blob 存储可能被视为 CORS,这是否可能被阻止?
更新 2: 将以下内容添加到我的 HTML 标记中似乎可以在 FireFox(但不是 Safari)中工作,这是跨浏览器处理此问题的正确方法
type="application/octet-stream"
更新 3: 通过 Node 设置内容配置和内容类型似乎可以正常工作。我不得不问,这是正确的方式吗?
blobSvc.setBlobProperties(containerName, filename, { contentDisposition: 'attachment', contentType: 'application/octet-stream' }, function (error, result, response) {
// result code here....
})
【问题讨论】:
-
我已经有了下载标签,它适用于某些浏览器,但不适用于 Safari 和 Firefox
-
您能否在为文件提供服务的响应中添加“Content-disposition: attachment”标头?
-
很想这样做,但不确定我会在哪里这样做?节点? IIS?蔚蓝?
标签: node.js angularjs azure firefox