2017-08-14 9 views
0

.NET(Entity Framework)とAngularJSを使用してPDFファイルを取得する簡単なWebアプリケーションを作成しました。私はデスクトップのブラウザとiOSのブラウザでアプリが完璧に動作するようにすることができます。残念ながら、これをAndroidブラウザで動作させることに問題があります。AndroidブラウザでBLOB URLが機能しない

私のコントローラの中には、pdfを要求して表示する単純なボタンをクリックすることによってトリガーされる機能があります。私は解決策hereを使用して、iOSとエッジブラウザでPDFが正しく動作するようにしました。上記のコード上で述べたように

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上で空白のブロブページを開くか、Android上のファイルをダウンロードするために失敗しますか。

これに関するご提案は大変ありがとうございます。

は、私は必要に応じて作業を取得することができませんでした任意の追加情報

答えて

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)); 
     } 
    }) 
関連する問題