我有一个web api从azure中读取文件并将其下载到一个字节数组中。客户端收到该字节数组并将其下载为pdf。这对于大文件不适用。 我无法弄清楚如何从web api发送字节块到客户端。下载大文件时浏览器崩溃
下面是Web API代码仅返回字节数组客户端:
CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
blockBlob.FetchAttributes();
byte[] data = new byte[blockBlob.Properties.Length];
blockBlob.DownloadToByteArray(data, 0);
return report;
客户端代码获取数据AJAX请求完成时,创建一个链接,并设置其下载文件的下载属性:
var a = document.createElement("a");
a.href = 'data:application/pdf;base64,' + data.$value;;
a.setAttribute("download", filename);
1.86 MB的文件发生错误。
浏览器显示消息: 显示网页时出现问题。要继续,请重新加载网页。
使用URL.createObjectURL()代替dataURLs – dandavis
你可以发布你的代码吗?很难看出它的根本问题。什么是错误?它是服务器端错误,客户端错误,你发现文件大小的阈值?我已经完成了从Azure存储下载多个GB文件大小的项目,所以我知道这里没有限制。 – ManOVision
@ManOVision我添加了一些代码。谢谢。 – user2585299