之前我這樣作,如今感受很low:web
window.location.href = "http://127.0.0.1:8080/wx-sr-api/xxx/export";
如今能夠這樣作,直接上代碼,我這裏貼的是AngularJS的HTTP請求函數,ajax也是相似的:ajax
$http({ url: "http://127.0.0.1:8080/wx-sr-api/xxx/export", method: 'GET', params: reqData, responseType: 'arraybuffer' }).success(function (data, status, headers) { <!--var type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; if (!type) throw '無效類型';--> //對象 URL 也被稱爲 blob URL,指的是引用保存在 File 或 Blob 中數據的 URL。使用對象 URL 的 //好處是能夠沒必要把文件內容讀取到 JavaScript 中而直接使用文件內容。爲此,只要在須要文件內容的地 //方提供對象 URL 便可。 var urlCreator = window.URL || window.webkitURL; var blob = new Blob([data], { type: type }, decodeURI(headers()["x-filename"])); var url = urlCreator.createObjectURL(blob); //這個函數的返回值是一個字符串,指向一塊內存的地址。 //如下代碼保存個人excel導出文件 var link = document.createElement('a'); //建立事件對象 link.setAttribute('href', url); link.setAttribute("download", filename); var event = document.createEvent("MouseEvents"); //初始化事件對象 event.initMouseEvent("click", true, true, document.defaultView, 0, 0, 0, 0, 0, false, false, false, false, 0, null); //觸發事件 link.dispatchEvent(event); }).error(function (data, status) { }); //如下代碼能夠在頁面中顯示一個圖像文件: var filesList = document.getElementById("files-list"); EventUtil.addHandler(filesList, "change", function(event){ var info = "", output = document.getElementById("output"), progress = document.getElementById("progress"), files = EventUtil.getTarget(event).files, reader = new FileReader(), url = createObjectURL(files[0]); if (url){ if (/image/.test(files[0].type)){ output.innerHTML = "<img src=\"" + url + "\">"; } else { output.innerHTML = "Not an image."; } } else { output.innerHTML = "Your browser doesn't support object URLs."; } });