base64转file类型,并且作为参数发起axios/xhr请求(已封装好)

如果仅仅是base64转文件类型,只需要用dataURLtoBlob函数,参数dataurl是base64,参数name是转出的文件名称

import axios from 'axios'
//dataURLtoBlob便是base64转file的函数
function dataURLtoBlob(dataurl, name) {
  //base64转file
  var arr = dataurl.split(","),
    mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], name, {
    type: mime
  });
}
//imgData类型是base64
//url 后端接口地址
//data携带的其它参数
function upload(imgData, url = "/upload" ,data) {
  return new Promise((succ, fail) => {
    try {
      const file = dataURLtoBlob(imgData, new Date - 0);
      //用表单数据来保存file类型文件
      let formdata = new FormData();
      formdata.append("file", file);
      
      //根据自身情况决定是否进行其它参数的携带,列如type、dir
      //formdata.append("type", "image");
      //formdata.append("dir", "patient");
      for(let k in data)
      {
      formdata.append(k,data[key])
      }
      //地址
      axios.post(url,formdata).then(res=>{
        console.log(res);
      })
    } catch (error) {
      console.log(error)
      fail(error)
    }
  })
}

export default upload

用法


import upload from 'xxxxx'//upload文件所处的文件地址
let base64Data = 'xxxxxx'//base64内容
let url = 'xxxxxxx'      //后端接口地址
let data = {id:1}        //axios请求携带其它参数
upload(base64Data , url ,data).then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)})

你可能感兴趣的:(javascript,前端,开发语言)