vue+netcore webapi下载excel文件
后端代码
      /// 前段下载Excel模板
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("DownLoadExcelModleSubSystemList")]
        //[YuebonAuthorize("DownLoadExcelModleSubSystemList")]
        public ActionResult DownLoadExcelModleSubSystemList()
        {
            string basedirectory = Path.GetDirectoryName(typeof(Program).Assembly.Location);
            //头部保存 文件名
            HttpContext.Response.Headers.Append("Content-Disposition", "filename=" + System.Web.HttpUtility.UrlEncode("menu权限导入模板.xls"));
            //文件类型
            FileExtensionContentTypeProvider provider = new FileExtensionContentTypeProvider();
            string memi;
            string fileFullName = basedirectory + @"/ExcelTemplate/menu权限导入模板.xls";
            string fileExtions = Path.GetExtension(fileFullName);
            //获取文件类型
            provider.Mappings.TryGetValue(fileExtions, out memi);
            //读取文件流
            FileStream fs = new FileStream(fileFullName, FileMode.Open, FileAccess.Read);
            
             return File(fs, memi, Path.GetFileName(fileFullName));
            
           
        }
vue代码
<el-button type="primary" size="mini" @click="downLoadMenuExcel2()">Controll Excel模板文件</el-button>
/**
   * 请求下载excel文件
   * @param data
   */
export function downloadMenuExcelTempalte() {
  return http.request({
    url: 'Menu/DownLoadExcelModleSubSystemList',
    method: 'post',
    responseType: 'blob',  // ‘不标记请求为blob获取的excel文件为乱码’
    baseURL: defaultSettings.apiSecurityUrl // 直接通过覆盖的方式
  })
}
  //下载excel模板文件
    downLoadMenuExcel2 () {
      this.$confirm('下载excel模板?', '提示', {
        confirmButtonText: '确认',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        downloadMenuExcelTempalte().then(res => {
          //我这里使用了拦截器进行了数据的整理 res=res.data
          //未整理需要使用res.data进行数据接收 
          //方式一使用插件
          //npm install js-file-download --save
          // fileDownload(res, 'xxx.xls', 'application/vnd.ms-excel')
          // 建立Blob对象,设置文件类型
          //方式二使用自定义方法
          const link = document.createElement('a')
          let blob = new Blob([res], { type: "application/vnd.ms-excel" })
          let objectUrl = URL.createObjectURL(blob) // 建立URL
          link.href = objectUrl
          link.download = 'menu权限导入模板.xls' // 自定义文件名
          link.click() // 下载文件
          URL.revokeObjectURL(objectUrl); // 释放内存
        })
      }).catch(() => {
        // this.$message({
        //   type: 'info',
        //   message: '已取消'
        // });
      })
    },
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号