2012-03-20 8 views
2

AJAX呼び出しでサーバーからファイルをダウンロードしたいとします。 XMLHttpRequestからのオクテットストリームを処理する方法

var ifrm = document.getElementById("fileframe"); 
ifrm.src = "DownloadFile?fileid="+fileid; 

しかし、私は、より複雑な問題を持っている: それは次のように iframeを使用することにより簡単に行うことができます。 アプリケーション/オクテットストリームの代わりに、コンテンツタイプが 'text/html'の応答がバックエンドによって返される場合もあります。

私はXMLHttpRequestのファイルをダウンロードするための呼び出しを使用する予定です。 を使用してXMLHttpRequestアプリケーション/オクテットストリームを処理するためのファイル保存ダイアログをポップアップするブラウザを作成するにはどうすればよいですか?

// connect function handles the XMLHttpRequest communication with the backend 
var connection = connect('DownloadFile','fileid='+fileid); 
connection.onreadystatechange = function(){ 
    if(connection.readyState == 4) { 
     var contentType = connection.getResponseHeader('Content-Type'); 
     if(contentType == 'application/octet-stream'){ 
      // here I want to make the browser popup a save file dialog 
      // for the incoming octet stream 
      // maybe I can direct stream to an iframe, but how?? 

     }else{ 
      alert(connection.responseText); 
     } 
    } 
    if((connection.readyState == 2)||(connection.readyState == 3)){ 
    } 
} 

答えて

0

私は2つの選択肢が考えられます。

  1. 最初にHEADリクエストを送信し、内容に基づいてアクションを決定します。 タイプ。
    何を期待するかを知るGETリクエストを発行します。
  2. データで URI(RFC 2387)を作成し、window.openを使用して開きます。
    ブラウザは、レンダリングできないコンテンツのダイアログボックスを開きます。
関連する問題