我正在尝试生成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
答案 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