ajax文件下載


一、Jq擴展方法

$.extend({
    downloadFile: function (reqType, url, dataOptions) {

        var dataObj = null;
        if (typeof (dataOptions) == "object") {
            dataObj = JSON.stringify(dataOptions);
        } else {
            dataObj = dataOptions;
        }

        var xmr = null;
        if (window.XMLHttpRequest) {// code for all new browsers
            xmr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {// code for IE5 and IE6
            xmr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if (xmr == null) {
            alert("當前瀏覽器版本過低,不支持文件下載");
            return;
        }
        xmr.open(reqType, url, true);
        if (reqType.toLowerCase() == "post") {
            xmr.setRequestHeader("Content-Type", "application/json");
        }
        xmr.setRequestHeader("Authorization", "Bearer " + $.cookie("BtYinLong"));

        xmr.responseType = 'blob';
        xmr.onload = function (res) {
            if (xmr.status === 200) {
                var blob = new Blob([xmr.response]);
                var dispositionArray = xmr.getResponseHeader("Content-disposition").split(";");
                var filename = dispositionArray[dispositionArray.length - 1].replace("filename*=UTF-8''", '').replace(" ", '');
                filename = decodeURI(filename);

                if (window.navigator.msSaveOrOpenBlob) {
                    navigator.msSaveBlob(blob, filename);
                } else {
                    var csvUrl = URL.createObjectURL(blob);
                    var link = document.createElement('a');
                    link.href = csvUrl;
                    link.download = filename;
                    link.click();
                }
            } else {
                alert(xmr.status + ' ' + xmr.statusText);
            }
        };
        xmr.send(dataObj);

    }
})

二、調用示例:$.downloadFile("post",url,{id:1});

三、.netcore Api后端返回實列:

        /// <summary>
        /// 數據導出
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        [HttpPost]
       
        public IActionResult ExportUrgeRecord(PreUrgeRecordQuery dto)
        {
            var data = pre_UrgeRecordRepository.GetList(dto).Result;
            var bytes = ExportExcelHelper.GenExcelFileStream(data.rows);
            return File(bytes, "application/octet-stream", "記錄導出列表.xlsx");
            
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM