正常向后端传的文件就是file格式,存储到文件服务器

url -> base64  -> file

url -> blob -> file

url -> base64 -> blob -> file

  • url -> base64  canvas.toDataURL('image/type')
   urlToBase64 () {let me = this// 获取图片的typelet type = src.slice(src.lastIndexOf('.') + 1, src.length)var canvas = document.createElement('canvas');var img = document.createElement('img');// 设置可以跨域img.setAttribute('crossOrigin', 'anonymous')img.onload = function(e) {canvas.width = img.width;canvas.height = img.height;var context = canvas.getContext('2d');context.drawImage(img, 0, 0, img.width, img.height);document.body.append(canvas)let base64 = canvas.toDataURL('image/' + type)return base64}img.src = src;}
  • base64 -> blob  new Blob(blobArr, {type: contentType})
    base64ToBlob (b64Data, contentType, sliceSize) {contentType = contentType || '';sliceSize = sliceSize || 512;var byteCharacters = window.atob(b64Data);// var byteCharacters  = b64Data;//该atob函数将base64编码的字符串解码为一个新字符串,其中包含二进制数据每个字节的字符。var byteArrays = [];for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {var slice = byteCharacters.slice(offset, offset + sliceSize);var byteNumbers = new Array(slice.length);//通过使用.charCodeAt字符串中每个字符的方法应用它来创建一个字节值数组。for (var i = 0; i < slice.length; i++) {byteNumbers[i] = slice.charCodeAt(i);}//将此字节值数组转换为实际类型的字节数组,方法是将其传递给Uint8Array构造函数。var byteArray = new Uint8Array(byteNumbers);byteArrays.push(byteArray);}//创建一个blob:包含此数据的URL,并将其显示给用户。var blob = new Blob(byteArrays, { type: contentType });return blob;}
  • base64 -> file  new File(fileArr, filename, { type: contentType})
    //  base64 => filedataURLtoFile (dataurl, filename, src) {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);}let file = new File([u8arr], filename, {type:mime});return file },
  • url -> blob  xhr.responseType = blob
   downFile (src) {let me = thisvar xhr = new XMLHttpRequest();xhr.open('GET', src);xhr.responseType = 'blob';   //二进制文件xhr.onload = function(){console.log(this.response, 'response')var filename = src.slice(src.lastIndexOf('.') + 1, src.length)// var arr = src.split(','), mime = arr[0].match(/:(.*?);/)[1];var blob = this.response;return blob;//blob转fileme.postImg(file, src)console.log('file', file)if(this.status === 200){var img = document.createElement('img');img.src = window.URL.createObjectURL(this.response);img.onload = function(){//图片加载完,释放一个URL资源.window.URL.revokeObjectURL(this.src);}document.body.appendChild(img);}}xhr.send();}
  • blob -> file
  blobToFile (blob, filename, contentType) {let file = new File([blob], filename, {type: contentType, lastModified: Date.now()});return file}
  • blob | file -> base64 // input接收文件的格式就是blob|file  (new FileReader()).readAsDataURL
  fileToBase64 (file) {let a = new FileReader()a.readAsDataURL(file)a.onload = function (e){        let base64 = e.target.resultreturn base64 }}

img 格式相互转换 url, base64,blob, file相关推荐

  1. 文件格式相互转换(base64转File等)

    前言:若项目中附件上传组件只能拿到文件的base64编码,而后台要的是File对象,在没办法使用其他上传组件的情况下,可以在拿到base64编码后转换成后台需要的格式. 附:图片转BASE64编码工具 ...

  2. js 图片上传传给后台的几种格式,formData,base64,file,blob流

    1. file格式 创建formData来完成file上传 <input type="file" id="imgfile" name="pic& ...

  3. 图片base64,file,blob格式的相互转换,以及gif转base64

    图片base64,file,blob格式的相互转换,以及gif转base64(第六点) 1.new Image()图片链接转base64 只能转化为普通的jpg/png图片.无法转化gif图 type ...

  4. html5 文件转byte[],JS 文件base64、File、Blob、ArrayBuffer互转

    二进制互转 1. file对象转base64let reader = new FileReader(); reader.readAsDataURL(file[0]) console.log(reade ...

  5. js 获取图片url的Blob值并预览

    js 获取图片url的Blob值并预览 1)使用 XMLHttpRequest 对象获取图片url的Blob值 参考:https://www.cnblogs.com/tujia/p/6483255.h ...

  6. Blob File

    文章目录 学习链接 Blob 创建 演示 分片 演示 File input 手动拖拽 fetch 从后端获取流 前端代码 后端代码 window.showOpenFilePicker Fileread ...

  7. Base64 转 File (附下载)

    问题 当需要下载已经上传的文件时,后端太烂不愿意做,就只传了base64,然后丢给我们,这时候应该怎么办,这里有两个解决方法 1.打一顿就好了 2.老实自己写吧... 解决 1.先吧base64转换为 ...

  8. base64转file图片上传

    在微信公众号开发过程中,有可能会碰到这种情况,手写签字生成图片,或者页面生成图片等等,然后需求是将图片上传,一般上述情况都是由canvas转成的图片,格式都是base64类型的图片,而我们的上传接口一 ...

  9. 将图片(路径)转换为Base64 和 将base64转换为file类型

    var image={/* 将图片(路径)转换为Base64 */getBase64FromImageURL(url, callback) {var canvas = document.createE ...

最新文章

  1. 前端 ----jQuery的动画效果
  2. tensorflow2.0中dataset API 总结
  3. 数仓dw怎么建_搭建数据仓库的流程简介
  4. Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)阅读笔记
  5. spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解)
  6. JavaEE基础(04):会话跟踪技术,Session和Cookie详解
  7. 在SQL中检查约束-用MySQL和SQL Server语法示例解释
  8. 编程心得体会_生信编程语言的经验之谈
  9. NDoc使用简要手册的补充
  10. 什么是super?如何使用super调用超类构造函数?
  11. 农业农村部:非洲猪瘟对猪肉市场价格影响有限
  12. Quartz-scheduler 定时器概述、核心 API 与 快速入门
  13. c语言计算机二级常用库函数,2013年计算机二级C语言库函数的调用考点归纳
  14. GitHub 标星 120K+!这些神器仅需一行代码即可下载全网视频!
  15. bp神经网络和cnn神经网络,bp神经网络和神经网络
  16. (C/C++)数据结构所需的程序语言基础(一)数据类型、运算符及表达式
  17. 矢量控制与V/F控制详解
  18. 机器视觉丨环形无影光源丨原理及打光案例
  19. 电脑中了virus.win32.sality.i和virus.win32.pioneer.c病毒,导致所以的EXE文件打不开(打开浏览器会提示:xc0000005异常)
  20. 八、面向对象的三大特性:封装,继承,多态

热门文章

  1. 金蝶K3 WISE BOM多级展开_BOM成本表
  2. dell服务器硬件检测cable,DELL服务器硬件报错解决方法——错误代码寄解决和处理办法...
  3. hdu 4489 The King’s Ups and Downs【递推】
  4. 深度学习的过拟合与欠拟合问题的介绍与解决方案
  5. JVM源码分析之Attach机制实现完全解读
  6. Tracup|远程办公,为什么会让管理者抓狂?
  7. 程序员画手WLOP个人网站
  8. 聊聊3D建模行业的发展前景,这类建模师目前最吃香
  9. STM32H747 / STM32H745 简单测试
  10. 牛牛试题排版插件V3更新发布