图片上传的格式有哪些,怎么转换?这里指前端传递给后端需要的数据

1,062 阅读1分钟

我正在参加「初夏创意投稿大赛」详情请看:初夏创意投稿大赛

js 图片上传给后台的3种格式

1. file格式 (创建formData来完成file上传)

image.png

代码:

<input type="file" id="imgfile" accept="image/jpeg, image/png, image/jpg" >

然后再js中,通过监听input的change事件
document.querySelector(‘input’).onchange = function () {
 // 创建FormData对象
let fd = new FormData()
  // 把文件对象,放入FormData对象中; 属性以接口文档为准;
 fd.append('avatar', inp.files[0])
 // 发送ajax
 axios.post(‘路径’,{fd}).then(res=>{})
}

2. base64格式

image.png

代码:

// 1. 创建 FileReader 对象
    const fr = new FileReader()
// 2. 调用 readAsDataURL 函数,读取文件内容
    fr.readAsDataURL(files[0])
// 3. 监听 fr 的 onload 事件
    fr.onload = e => {
// 4. 通过 e.target.result 获取到读取的结果,值是字符串(base64 格式的字符串)
      this.avatar = e.target.result

3. Blob流格式

image.png 代码:

      // 1、new创建blob格式的一个对象,将文件放进去,type为类型
      let blob = new Blob([inp.files[0]], { type: "text/plain;charset=utf-8" })
      // 2、 创建 FileReader 对象
      let reader = new FileReader()
      // 3、FileReader 中的readAsDataURL方法可以将读取到的文件编码成DataURL ,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件
      reader.readAsDataURL(blob)
      // 4、onload:文件读取成功时触发
      reader.onload = (e) => {
        console.log('e就是读取文件返回的对象', e)
      }
      // 5、blob就是你需要的那个blob格式的对象
      console.log(blob)