我有一个PDF文件,可以在除Firefox/Safari之外的所有浏览器中下载。它会在浏览器窗口中打开它,而不是下载该文件。我的网站运行在node.js之上,并在Azure中托管。用户下载的文件来自Azure blob存储,所以我怀疑这可能是一个CORS问题。AngularJS强制Firefox/Safari下载文件而不是在浏览器中打开
下面是下载我的客户端代码:
<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:通过节点设置内容配置和内容类型似乎正在工作。我必须问,这是正确的方法吗?
blobSvc.setBlobProperties(containerName, filename, { contentDisposition: 'attachment', contentType: 'application/octet-stream' }, function (error, result, response) {
// result code here....
})
这可能是有用的http://stackoverflow.com/questions/11353425/force-a-browser-to-save-file-as-after-clicking-link –
我已经有下载标签,它在一些浏览器而不是Safari和Firefox – Kode
您可以向服务该文件的响应添加“Content-disposition:attachment”标头吗? – theadriangreen