【发布时间】:2015-09-05 23:26:06
【问题描述】:
我有一个 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
-
您可以按原样发布您的代码吗?没有它就很难看到潜在的问题。错误是什么?是服务器端错误,客户端错误,你找到文件大小的阈值了吗?我已经完成了从 Azure 存储下载多个 GB 文件大小的项目,所以我知道那里没有限制。
-
@ManOVision 我添加了一些代码。谢谢。
-
@dandavis 你是对的。谢谢。
标签: javascript c# asp.net-web-api azure-storage azure-blob-storage