2012-10-30 5 views
20

モバイルウェブアプリケーションでpdfをダウンロードする(またはダウンロードしようとする)ときに、Chromeから次のメッセージが表示されます。ChromeのトラブルシューティングPDF

"警告:何か問題が発生しました!...アクセスしようとしているサイトが奇妙な動作をしていて、ChromeがURLが正しいかどうかを確認できません。

これはSafariで正常に動作しており、基本的にこれを行っています。

  1. ロード時に、表示するドキュメントがOKであることを確認する呼び出しを行います。
    • 文書は、ユーザOKメッセージではありませんし、その後
  2. 直接PDFをダウンロードするアドレスに移動するタブタブを閉じる場合。あまりにも多くのコードJavascriptを投稿することなく

はこのようなものです:

DoRequest ("print_report", 
      "VALIDATE", 
      mycallback); 

function mycallback (data,error) { 

    var h_href = ""; 
    var h_widget = ""; 

    if(error == true) { 
     window.close(); 
     return; 
    }  

    h_href = GenerateHREF("print_report", "PRINT"); 

    window.location.href = h_href;   
} 

GenerateHREFによって提供されたURLは、同じ元のサイトのためのものであり、元に相対的です。
mimeタイプがapplication/pdfに設定されています。 内容の配置がインラインに設定されています。私もコンテンツサイズのヘッダーを設定しようとしましたが、何の効果もないようです。

Content-Disposition: attachment; filename="pp66.26.pdf" 
Content-Length: 31706 
Content-Type: application/pdf 

私は何かを逃しています...ちょうど何ですか?

+0

私は現在、Chromeはリンクの表示を開始ナビゲーションの直前にユーザインタラクションを追加することで、ポップアップブロックに関連していることを推測しています。 – DuStorm

+0

特にios Chromeのリモートデバッグは役に立ちませんが、 http://stackoverflow.com/questions/11262236/chrome-for-ios-remote-debugger – DuStorm

+0

私はこれがクロームバグだと思う、このリンクを参照してください:http://code.google.com/p/chromium/issues/ detail?id = 85549、Content-Lengthに関するもの。 – joao

答えて

0

もしそれがポップアップ/ダウンロードの問題であれば、iframeを使って表示することができますか?

<iframe src="downloads/report.pdf"></iframe> 
0

私はまた、ポップアップの挙動は、おそらく容疑者のリストの上位にあると思います(特にはwindow.close();の行は、ポップアップがユーザーによってブロックされている場合は特に、かなり疑わしいと思われます)。最終的な目標は、ファイルをダウンロードすることですので、

しかし、あなたは

Content-Disposition: attachment; filename="pp66.26.pdf" 
Content-Length: 31706 
Content-Type: applicaton/octet-stream 

にレスポンスヘッダを変更してみてください可能性があります。また、.htaccessファイルを経由してダウンロードを強制するために、特定のフォルダ内のすべてのPDFファイルを強制的に試みることができます

<FilesMatch "\.pdf$"> 
ForceType applicaton/octet-stream 
Header set Content-Disposition attachment 
</FilesMatch> 
1

ドキュメントをbase64に解析し、ドキュメントまたはiframeに追加するようにしてください。

function getAsyncBase64(fileName, callBack){ 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', fileName, true); 
     xhr.responseType = 'arraybuffer'; 
     xhr.onload = function (e) { 
     if (this.status == 200) { 
      var uInt8Array = new Uint8Array(this.response || this.responseText); 
      var i = uInt8Array.length; 
      var binaryString = new Array(i); 
      while (i--) { 
       binaryString[i] = String.fromCharCode(uInt8Array[i]); 
      } 
      var dataBinary = binaryString.join(''); 
      var data64 = window.btoa(dataBinary); 
      callback(data64);     
     } 
     xhr.send(); 
    }; 
    function callback(base64){ 
     window.open(base64, "_blank"); 
     //or 
     iframe.src = "data:application/pdf;base64,"+ base64; 
    }; 

    getAsyncBase64(url,callback); 
関連する問題