【发布时间】:2015-08-28 21:17:42
【问题描述】:
我有一个 Web 服务向客户端发送一个文件作为数组缓冲区,然后将其读入 blob 对象:
$scope.contentType = response.headers["content-type"];
$scope.file = new Blob([response.data], { type: $scope.contentType });
$scope.fileUrl = URL.createObjectURL($scope.file);
$scope.content = $sce.trustAsResourceUrl($scope.fileUrl);
我使用对象标签作为容器:
<object id="documentContainer" ng-show="loaded" ng-attr-type="{{contentType}}" ng-attr-data="{{content}}" class="document-container"></object>
这在FF、chrome、移动浏览器、从未与人类接触过的外星物种开发的网络浏览器等中效果很好,但在IE中却不行。
对象标签的data参数设置后,IE在控制台响应
错误:访问被拒绝。
这似乎是 IE 中的某种安全功能,它不想将文件用作源,因为它驻留在客户端计算机上。即使您使用 javascript 使用数据源集创建全新的 dom 元素,它也会禁止访问。
Microsoft 提供了自己的 blob 方法,例如 msSaveOrOpenBlob,但我需要能够将文件嵌入到浏览器中,而不是提示用户在外部应用程序中打开文件。
有谁知道在 IE 中嵌入 blob(可以是多种文件类型)的解决方法或方法?我不想为了适应 IE 而不得不彻底重构 Web 服务和前端代码,但看起来情况可能就是这样。
【问题讨论】:
标签: javascript angularjs internet-explorer pdf blob