使用Angular

时间:2015-10-27 08:58:33

标签: angularjs angularjs-scope

我正在尝试生成pdf并在任何Div中显示,我从服务器获取二进制数据,但是当我尝试转换该流时,它说无法加载pdf。 我用谷歌搜索并看到许多人的反应,说使用responseType:' arraybuffer'但我从服务器获取对象并从中提取二进制文件以便我无法使用它,尽管我也尝试过这种方法但它没有用。 这是我的控制器代码:

 correspondenceService.getCorrespondenceDocument(id).$promise.then(function (data) {
                var file = new Blob([(data[0].documentBytes)], { type: 'application/pdf' });
                var fileURL = window.URL.createObjectURL(file);
                vm.content = $sce.trustAsResourceUrl(fileURL);
                window.open(fileURL);

            }, function (reason) { });
        }

这是服务:

 getCorrespondenceDocument: function (correspondenceId) {
                return $resource(correspondenceUrl + "getCorrespondenceDocuments").query({ correspondenceId: correspondenceId });
            }

这是我的webApi:

  [Route("getCorrespondenceDocuments")]
        [HttpGet]
        public async Task<IEnumerable<Document>> GetCorrespondenceDocumentsAsync(int correspondenceId)
        {
            var documents = await _correspondenceFacade.GetCorrespondenceDocumentDetailsAsync(correspondenceId);
            return Mapper.Map<IEnumerable<Document>>(documents);
        }

尝试在View上显示如下:

请让我知道我在哪里做错了。非常感谢提前。

此致 的Vivek

1 个答案:

答案 0 :(得分:0)

最后我设法做到了。问题是我在$ http.get()中传递了3个参数,现在我只传递2个参数。

 getCorrespondenceDocuments: function (correspondenceId) {
            return $http.get(correspondenceUrl + 'getCorrespondenceDocuments' + '?correspondenceId=' + correspondenceId, { responseType: 'arraybuffer' }).then(function (response) {
                return response;
            });
        }

虽然我不想使用这个&#34;传递任何参数?&#34;并指定id但我无法找到解决此问题的任何方法。 非常感谢大家通过我的帖子。 问候, 的Vivek