超详细各类文件上传

各类文件上传遇到的情况

(情况一)使用各类ui组件上传,这里以element plus的upload组件来说

//	这里我们列举了最基本的功能,其中action配置为后端提供的上传接口地址
<el-upload
  	  v-model="fileList"
     :action="uploadFileServerUrl"
     :on-success="handleUploadSuccess"
   >
     <el-button
       @click="smallFileUpload"
     >选取文件</el-button>
     </template>
 </el-upload>

这里上传成功会返回两个东西,
一个是后端提供接口请求成功后的res信息=====》res
在这里插入图片描述
一个是上传的源文件信息(这个也很重要,用于后期需要再对源文件进行操作)=====》file在这里插入图片描述

let originFile = null
const handleUploadSuccess = (res, file) => {
  originFile = file.raw
  if (res.code === 200) {
   //	XXXXXXXXXXXX
  } 
}

到这里就可以,就是正常请求的过程了

(情况二)我们需要手动调用接口,来上传

前言:基于我们的第一种情况,使用了组件的自动上传功能,那么如果说后续还要继续对我们上传的文件进行其他操作呢,
在这里给,工作中给我们提出了一个需求,例如:上传了一个图片,那么后期可以手动可选择性的对图片进行切边,去除屏幕纹等操作,
在这里插入图片描述
那么这些操作是需要我们再次调用后端接口,并且需要需要传递参数为fie(binary)格式的
在这里插入图片描述

重点就来了,那么 我们之前保存的源文件信息就大有用处了

这里我们做一个对原图片进行切边增强的处理,来调用接口测试下

let originFile = null
const handleUploadSuccess = (res, file) => {
  originFile = file.raw
}

拿到后值这样的源文件信息
在这里插入图片描述

老样子,这里我们需要对源文件信息,进行一个转化

originFile为上一步我们拿到的源文件

 	let formData = new FormData();
    formData.append('file', originFile)
    let res = await imageTrimming(formData)

这里我们调用接口成功,后端不在给我们返回url,而是返回base64
在这里插入图片描述

重中之重来了,这里如果说这个我们完成了对图片切边,(后端返回为base64),接下来我们要在对图片切边的基础上,在进一步处理,例如去除屏幕纹。(接口参数和图片切边接口参数格式一致为binary)

准备工作:需要提取文件参数,问题点就是我们如何对后端返回回来的base64转成file(binary)格式呢
这里直接封装了一个方法,上代码,直接复用

// base64转换file
const base64ToFile = (base64, fileName) => {
  let arr = base64.split(",");
  let bstr = atob(arr[1]);
  let n = bstr.length;
  let u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  let file = new File([u8arr], fileName, { type: 'jpeg' })
  let formData = new FormData()
  formData.append('file', file)
  //	接下来就是调用接口了
  //	XXXXX
  //	完事
}

除了转换方式变了一下其他请求方式不变,到这里我们就成功了,成功对图片做了进一步操作,也符合接口请求参数格式
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值