XMLHttpRequest下载文件,js下载文件,支持后台消息在前端页面提示

Posted 棉晗榜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XMLHttpRequest下载文件,js下载文件,支持后台消息在前端页面提示相关的知识,希望对你有一定的参考价值。

js

 //获取token
        var token = sessionStorage.getItem('token');
        var url="/api"+Order+"ExportEXCEL_PageOfOrderList?"+queryD+"&token="+token;  
          
        // var iframe = document.createElement('iframe');
        // iframe.src =url;
        // iframe.id="file77789";
        // iframe.style = "display:none";
        // document.body.appendChild(iframe);

        var xhr = new XMLHttpRequest();
xhr.open('get', url);

xhr.onload = function (e) 
    console.log(772,xhr);

   var contentType= xhr.getResponseHeader("content-type");
   console.log(779,contentType);
   
   if(contentType.indexOf("text/html")!=-1)
     //后台消息提示
    alert(this.responseText);  
    return;
   
   var blob = new Blob([this.response],  type: contentType); 
    if (this.status == 200) 
        var filenameHead = xhr.getResponseHeader("Content-disposition");
        console.log('filename='+filenameHead);
        var reg=new RegExp("(filename=)[_*[a-zA-Z0-9]*(.csv);]*");
        var urlArr=reg.exec(filenameHead);
        console.log(urlArr);
        var filename=urlArr[0].split('=')[1];        
        filename=filename.replace('filename=','');       
        filename=filename.replace(';',''); 
        filename=filename.replace(/_/g,'');
     
        console.log('filename='+filename);

        //var blob = this.response;
        var a = document.createElement('a');
        var urlTemp = URL.createObjectURL(blob);
        a.href = urlTemp;
        a.download = filename;
        document.body.appendChild(a);
        a.click();
        window.URL.revokeObjectURL(urlTemp);
    
;
xhr.send();
       

后台导出excel文件

[TokenFilter]
[HttpGet("ExportEXCEL_PageOfOrderList")]
public async Task<ActionResult> ExportEXCEL_PageOfOrderList([FromQuery] SelectWhere selectWhereStr)
	
	var result = await mq_DataDisposeBusiness.GetPageOfOrderList(selectWhereStr, 1, 40000);

	if (result.Code != ResultEnum.Success)
	
		if (result.ErrorMessage.Equals("未找到数据"))
		
			return Content("导出内容不能为空", "text/html;charset=UTF-8");
		              
		return Content(result.ErrorMessage, "text/html;charset=UTF-8");
	
	if (result.Payload.Total == 0)
	               
		return Content("导出内容不能为空", "text/html;charset=UTF-8");
	

	//生成EXCEL文件
	List<List<object>> exportData = new List<List<object>>();	 
	string columName = "条码号,样本类型,检测时间,科室名称,智能分类建议,溶血(mol/L),黄疸(mol/L),乳糜(mol/L),用户反馈";

	foreach (var item in result.Payload.List)
	
		var row = new List<object>();
		row.Add(item.OrderId);
		row.Add(item.OrderTypeName ?? "其它");//样本类型
		string time = "";
		if (item.OrderCreateTime.HasValue)
		
			time = item.OrderCreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
		
		row.Add(time);//检测时间
		row.Add(item.Department);//科室名称
		row.Add(item.ResultStr);//智能分类建议
		row.Add(item.HNum.ToString() == "0" ? "--" : item.HNum.ToString());//溶血(mol/L)
		row.Add(item.INum.ToString() == "0" ? "--" : item.INum.ToString());//黄疸(mol/L)
		row.Add(item.LNum.ToString() == "0" ? "--" : item.LNum.ToString());//乳糜(mol/L)
		row.Add(item.UserLable);//用户反馈
		exportData.Add(row);
	

	string fileName = "样本查询" + DateTime.Now.Ticks + ".csv";
	string downUrl = $"/ CommonNameValueConfig.ExportDir/" + fileName;
	string path = AppDomain.CurrentDomain.BaseDirectory + System.IO.Path.Combine(CommonNameValueConfig.ExportDir, fileName);
	WebAPI_Serum.Model.CsvHelper.ExportMakeCsv(exportData, path, "样本导出", columName);

	return PhysicalFile(path, "application/octet-stream", fileName);

以上是关于XMLHttpRequest下载文件,js下载文件,支持后台消息在前端页面提示的主要内容,如果未能解决你的问题,请参考以下文章

js通过HEAD请求方式提前获取下载文件大小,XMLHttpRequest和ajax两种实例

js多文件下载并重命名

js多文件下载和多文件分文件夹打包下载并重命名

Cordova XMLHttpRequest 文件下载

js 下载文件 不直接打开的方法

如何处理 XMLHttpRequest 下载文件中的 javascript? [复制]