国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - js跨域請求下載excel文件。
伊謝爾倫
伊謝爾倫 2017-04-11 11:37:30
0
2
369

前后分離后

export const download = function(options){

let xhr = new XMLHttpRequest();  // XMLHttpRequest 對象
xhr.open("GET", options.url, true);
xhr.setRequestHeader('Authorization', authorization());//前后分離的權限頭
xhr.send(obj2url(options.get));
xhr.responseType = "blob";//這里是關鍵,它指明返回的數(shù)據(jù)的類型是二進制
xhr.onreadystatechange = function(e) {
    if (this.readyState == 4 && this.status == 200) {
        console.log('change download');
        var response = xhr.response;
        let url = URL.createObjectURL(response);
        img.src=url;//如果這里是圖片,可以顯示出圖片。
        window.open(url);//想通過打開窗口來下載excel文件。卻不可以。
    }
}

};

想通過download({url:"http://xxx.ssss:88/sss.xls"});來下載服務器的excel文件。

伊謝爾倫
伊謝爾倫

小伙看你根骨奇佳,潛力無限,來學PHP伐。

reply all(2)
PHPzhong

第一樓評論的很好啊

直接用 a標簽 然后模擬點擊,直接系統(tǒng)的下載就行了,何必還要自己去ajax請求。。而且還跨域了

祖?zhèn)髑岸讼螺djs,供你參考

function fake_click(obj) {
  var ev = document.createEvent('MouseEvents');
  ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  obj.dispatchEvent(ev);
}

function export_raw(name, data) {
  var urlObject = window.URL || window.webkitURL || window;
  var export_blob = new Blob([data]);
  var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')
  save_link.href = urlObject.createObjectURL(export_blob);
  save_link.download = name;
  fake_click(save_link);
}
迷茫

先弄清楚倆問題,地址是否暴露給外網(wǎng)請求:

(1)如果暴露給外網(wǎng)

就直接寫a標簽href指向那個地址就OK了。

(2)如果只對內(nèi)網(wǎng)暴露

有兩種方法:
1.找運維給你配置地址,讓服務器excel文件夾暴露,然后走(1)
2.前端工程做一層代理,再往后端請求,就不跨域了,然后走(1),地址是你前端項目配置的地址。
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template