• js文件下载几种请求方式,普通请求方式封装


    import axios from 'axios'
    // axios.defaults.timeout = 30 * 1000;
    // axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
    import FileSaver from 'file-saver'
    import { saveAs } from 'file-saver/FileSaver';
    import { reject } from 'lodash';
    export function getRequest(url, params, noFilter) {
      var newParam
      if (!noFilter) {
        newParam = params
      } else {
        newParam = params
      }
      url += (url.indexOf('?') < 0 ? '?' : '&') + translateParam(newParam)
      return new Promise((resolve, reject) => {
        return axios.get(url).then(res => {
          resolve(res)
        })
          .catch(err => {
            reject(err)
          })
      })
    }
    
    export function postRequest(url, params) {
      return new Promise((resolve, reject) => {
        axios.post(url, params)
          .then(response => {
            resolve(response.data);
          })
          .catch(error => {
            reject(error);
          })
      })
    }
    export function putRequest(url, params) {
      return new Promise((resolve, reject) => {
        axios.put(url, params)
          .then(response => {
            resolve(response.data);
          })
          .catch(error => {
            reject(error);
          })
      })
    }
    
    export function deleteRequest(url, params) {
      return new Promise((resolve, reject) => {
        axios.delete(url, { data: params })
          .then(response => {
            resolve(response.data);
          })
          .catch(error => {
            reject(error);
          })
      })
    }
    // 下载文件 post
    export function downloadPost(params, url, fileName = "") {
      return new Promise((resolve, reject) => {
        let context = ''
        axios({
          method: 'post',
          headers: {
            'Content-type': 'application/json'
          },
          data: params,
          url: url
        }).then(res => {
          let data = res.data
          var FileSaver = require('file-saver');
          var file = new File(['\uFEFF' + data], fileName + new Date().getTime() + '.csv', {
            type: 'text/plain;charset=utf-8'
          });
          FileSaver.saveAs(file);
          resolve()
        })
      })
    }
    
    // 下载文件 get
    export function downloadUrl(url, type = '.csv', name) {
      return new Promise((resolve, reject) => {
        let context = ''
        axios.get(url).then(res => {
          // console.log(res)
          context = res.data
          let file = new File(["\uFEFF" + context], (name ? name : new Date().getTime()) + type, {
            type: "text/plain;charset=utf-8"
          })
          FileSaver.saveAs(file)
          resolve()
        })
      })
    
    }
    // 导出execl文件POST
    export function downloadExeclPost(url, params, type, fileName = '') {
      return new Promise((resolve, reject) => {
        axios({
          method: "post",
          url: url,
          headers: {
            'Content-type': 'application/json'
          },
          responseType: "blob",
          data: params,
        }).then((res) => {
          console.log(" res.headers['content-disposition']", res, res.headers['content-disposition'])
    
          if (null != res.headers['content-disposition']) {
            fileName = res.headers['content-disposition'].split('=')[1];
          } else {
            // fileName = new Date().getTime() + '.' + type
            fileName = '金融车批量查询' + '.' + type
          }
          fileDownload(res.data, type, fileName);
          resolve()
        }).catch((error) => {
          alert("网络请求出错!", error)
        })
      })
    
    
    }
    
    // 导出execl文件
    export function downloadExecl(url, type, fileName = '') {
      return new Promise((resolve, reject) => {
        axios({
          method: "GET",
          url: url,
          responseType: "blob",
          // data: {},
          //此处配置token和入参类型
          // transformRequest: [function(fData, headers) {
          //   headers['Content-Type'] = 'application/json'
          //   headers['Authorization'] = 'RDS eyJhbGciOiJIUzUxMiJ9.eyJyYW5kb21LZXkiOiIwLjI4MjIwNTI2OTQ2MjgyMTEiLCJzdWIiOiJjZWQ0NTViOTAyNDRhMmZlZDBjMmIzNmI4MjY1ZWY4MiIsImV4cCI6MTYwMTI5ODg2OCwiaWF0IjoxNjAxMjU1NjY4fQ.kGmaiXn8qZfC1ZnHCwWO6rMcmO_a1u60CsL-9oANV81Nv-nD7S2crDGpAGTECXxYcVvM6R3Uyj13UuZnBrSfVQ.wmrds142'
          //   return JSON.stringify(fData)
          // }]
        }).then((res) => {
          if (null != res.headers['content-disposition']) {
            const tempName = res.headers['content-disposition'].split('=')[1];
            fileName = decodeURI(tempName)
          } else {
            fileName = new Date().getTime() + '.' + type
          }
          fileDownload(res.data, type, fileName);
          resolve()
        }).catch((error) => {
          alert("网络请求出错!", error)
        })
      })
    }
    function fileDownload(data, type, fileName) {
      let blob = new Blob([data], {
        type: "application/octet-stream"
      });
      let filename = fileName || "filename." + type;
      if (typeof window.navigator.msSaveBlob !== "undefined") {
        window.navigator.msSaveBlob(blob, filename);
      } else {
        var blobURL = window.URL.createObjectURL(blob);
        var tempLink = document.createElement("a");
        tempLink.style.display = "none";
        tempLink.href = blobURL;
        tempLink.setAttribute("download", filename);
        if (typeof tempLink.download === "undefined") {
          tempLink.setAttribute("target", "_blank");
        }
        document.body.appendChild(tempLink);
        tempLink.click();
        document.body.removeChild(tempLink);
        window.URL.revokeObjectURL(blobURL);
      }
    }
    
    export function translateTqParam(data) {
      let url = ''
      for (var k in data) {
        let value = data[k] !== undefined ? data[k] : ''
        url += `&${k}=${value}`
      }
      return url ? url.substring(1) : ''
    }
    
    export function translateParam(data) {
      let url = ''
      for (var k in data) {
        let value = data[k] !== undefined ? data[k] : ''
        url += `&${k}=${encodeURIComponent(value)}`
      }
      return url ? url.substring(1) : ''
    }
    
    export function filterParam(param) {
      let obj = {}
      for (let key in param) {
        if (param[key]) {
          obj[key] = param[key]
        }
      }
      return obj
    }
    

      

    import { getRequest, postRequest, downloadPost } from '@/assets/js/request'
    import { reqUrl } from './api'
    const BaseUrls = {
        getVins:reqUrl + 'tripanalyse/getOperatingCarVins'
    }
    
    export default {
        getVins(params) {
            let url = BaseUrls.getVins
            try {
                const result = postRequest(url, params)
                return result
            } catch (err) {
                return err
            }
        },
    searchTableNames(params) {
            let url = BaseUrls.searchTableNames
            try {
                const result = getRequest(url, params)
                return result
            } catch (err) {
                return err
            }
        },
    getDelete(params) {
        let url = BaswUrls.getDelete
        try{
            const result = deleteRequest(url,params)
            return result
        }catch(err){
            return err
        }
    }
    downloadDetail(params,fileName) {
            let url = BaseUrls.downloadDetail
            try {
                const result = downloadPost(params, url,fileName)
                return result
            } catch (err) {
                return err
            }
        },
    socDistributionDownLoad(params,name){
        let url = `${BaseUrls.socDistributionDownLoad}?${translateParam(params)}`
        // let type = 'xls'
        await downloadUrl(url,'.csv',name)
    }
    bmsByBatteryDownload(params) {
        let url = `${BaseUrls.bmsByBatteryDownload}`
        let type = 'xls'
        await downloadExeclPost(url, params, type)
    }
    async infoDownload(params){
            let url = `${BaseUrls.infoDownload}?${translateParam(params)}`
            let type = 'xls'
           await downloadExecl(url, type)
        },
    
    }
    

      

  • 相关阅读:
    spring boot的gradle整合日志
    eclipse编译器显示的文件名乱码,活动标签乱码(已解决)
    springboot+mybatis+freemark+oauth开发环境搭建
    jQuery自定义alert,confirm方法及样式
    jQuery生成二维码
    input设置背景透明、placeholder的字体颜色及大小
    给tomcat配置外部资源路径(应用场景:web项目访问图片视频等资源)
    tomcat双击startup.bat启动时闪退
    git从远程分支clone项目到本地,切换分支命令,其他常用命令
    java遍历实体类的属性和值
  • 原文地址:https://www.cnblogs.com/sinceForever/p/15608205.html
Copyright © 2020-2023  润新知