我使用.NET(With Entity Framework)和AngularJS创建了一个简单的Web应用程序来检索PDF文件。我可以让应用程序在桌面浏览器和iOS浏览器上完美运行。不幸的是,我遇到了在任何Android浏览器上使用它的问题。
在我的控制器内部是一个功能,通过点击一个请求并显示pdf的简单按钮来触发。我能够使用解决方案here来使PDF在iOS和Edge浏览器上正常工作。
appModule.controller("cellController", ['$scope','$http','$routeParams','$window','$sce', function ($scope, $http, $routeParams,$window,$sce) {
....
$scope.getLayout = function () {
var attachmentPromise = $http.get("/api/pdf" + $routeParams.ID, { responseType: 'blob' }).then(function (result) {
var file = new Blob([result.data], { type: 'application/pdf' });
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(file, "Layout.pdf");
}
else if (window.navigator.userAgent.match('CriOS')) {
var reader = new FileReader();
reader.onloadend = function () { $window.open(reader.result); };
reader.readAsDataURL(file);
}
else if (window.navigator.userAgent.match(/iPad/i) || window.navigator.userAgent.match(/iPhone/i)) {
var url = $window.URL.createObjectURL(file);
window.location.href = url;
}
else {
var url = window.URL || window.webkitURL;
window.open(url.createObjectURL(file));
}
});
};
}]);
如上所述,上述代码在桌面和iOS上运行良好,但会在Android上打开空白blob页面,或者无法在Android上下载该文件。
对此有任何建议将不胜感激:)。
如果我能提供任何其他信息,请告诉我
答案 0 :(得分:0)
我无法根据需要让它工作。作为一种解决方法,如果用户使用Android设备,我只需打开文件地址窗口即可将文档下载到本地存储。我希望这是将来解决的问题。
var attachmentPromise = $http.get("/api/" + $routeParams.ID, { responseType: 'blob' }).then(function (result) {
var file = new Blob([result.data], { type: 'application/pdf' });
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(file, "Layout.pdf");
}
else if (window.navigator.userAgent.match(/Chrome/i) && window.navigator.userAgent.match(/Mobile/i)) {
window.open("/api/" + $routeParams.ID)
}
else if (window.navigator.userAgent.match('CriOS')) {
var reader = new FileReader();
reader.onloadend = function () { $window.open(reader.result); };
reader.readAsDataURL(file);
}
else if (window.navigator.userAgent.match(/iPad/i) || window.navigator.userAgent.match(/iPhone/i)) {
var url = $window.URL.createObjectURL(file);
window.location.href = url;
}
else {
var url = window.URL || window.webkitURL;
window.open(url.createObjectURL(file));
}
})