js下载流文件

js代码:

//  获取时间戳
let timestamp = new Date().getTime();
// 获取XMLHttpRequest
let xmlResquest = new XMLHttpRequest();
//  发起请求
xmlResquest.open("GET", `${API}/export/exportCheckingIn?uuid=${params.name}&startTime=${params.startTime}&endTime=${params.endTime}`, true);
// 设置请求头类型
xmlResquest.setRequestHeader("Content-type", "application/json");
//  设置请求token
// xmlResquest.setRequestHeader(
 
// );
xmlResquest.responseType = "blob";
//  返回
xmlResquest.onload = function (oEvent) {
    let content = xmlResquest.response;
    // 组装a标签
    let elink = document.createElement("a");
    // 设置下载文件名
    elink.download = timestamp + ".xlsx";
    elink.style.display = "none";
    let blob = new Blob([content]);
    elink.href = URL.createObjectURL(blob);
    document.body.appendChild(elink);
    elink.click();
    document.body.removeChild(elink);
};

xmlResquest.send();

c#后台代码:

        public static HttpResponseMessage Download(string filePath)
        {
            string fullPath = BasePath + filePath;

            string fileName = Path.GetFileName(fullPath);
            FileStream fileStream = new FileStream(fullPath, FileMode.Open);

            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
            response.Content = new StreamContent(fileStream);

            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

            MediaTypeHeaderValue contentType = response.Content.Headers.ContentType;
            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = HttpUtility.UrlEncode(fileName)
            };

            response.Headers.Add("Access-Control-Expose-Headers", "FileName");
            response.Headers.Add("FileName", HttpUtility.UrlEncode(fileName));

            return response;
        }

猜你喜欢

转载自www.cnblogs.com/zhuyapeng/p/13402697.html