我们使用AngularJS和ServiceStack编写了一个应用程序,可以从基于AngularJS的HTML客户端中单独下载各种文档和从服务器下载zip文件。 AngularJS / Javascript应用程序能够使用REST调用调用服务器端代码,并获取二进制数据并在客户端上组装blob对象,并使用HTML5 W3C saveAs()触发客户端保存文件。 blob的content-type设置为application / octet-stream。此功能在Chrome,FireFox,Opera甚至IE和Edge中都能正常运行。
然而,Safari抛出一个异常,说“无法加载资源:帧加载中断”。是否有一个工作的Javscript或AngularJS示例用于Safari,有人可以与我共享,这将允许我汇集从服务器端流式传输的blob二进制数据?
以下是代码片段:
var arr = results.data;
var byteArray = new Uint8Array(arr);
var blob = new Blob([byteArray], { type: 'application/octet-stream' });
var outputFileName = "somefilename.zip";
saveAs(blob, outputFileName);
我们还尝试了几种尝试减轻浏览器差异的Javascript框架,如下所示:
他们都没有为Safari工作。
我们陷入困境,我们需要弄清楚如何处理Safari用户。我正在使用Safari版本9.0.x,如果这有帮助。任何在Safari中工作的代码示例都将深受赞赏!
约翰