来自XMLHttpRequest的流

我想通过AJAX调用从服务器下载文件。 这可以通过使用iframe轻松完成,如下所示:

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

但是我有更复杂的问题。 在某些情况下,而不是application / octet-stream ,内容类型为'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)){
    }
}

我可以考虑两种选择。

  • 首先发送HEAD请求并根据内容类型决定操作。
    发出一个GET请求,了解期望的内容。
  • 用数据创建数据URI(RFC 2387)并使用window.open打开它。
    浏览器将打开一个对话框,显示无法呈现的内容。
  • 链接地址: http://www.djcxy.com/p/46263.html

    上一篇: stream coming from XMLHttpRequest

    下一篇: How to set response filename without forcing saveas dialog