data:image data url 文件转为Blob上传后端的方法


Posted in HTML / CSS onJuly 16, 2019

一些场景,比如canvas获取的图片,或者微信开发sdk返回的图片格式是data:img格式的,我们需要上传到服务器上,那就需要进行转化。

将dataURL转成Blob

// base64 转 blob
dataURItoBlob(dataURI) {
  // convert base64/URLEncoded data component to raw binary data held in a string
  let byteString;
  if (dataURI.split(',')[0].indexOf('base64') >= 0) {
    byteString = atob(dataURI.split(',')[1]);
  } else byteString = unescape(dataURI.split(',')[1]);

  // separate out the mime component
  const mimeString = dataURI
    .split(',')[0]
    .split(':')[1]
    .split(';')[0];

  // write the bytes of the string to a typed array
  const ia = new Uint8Array(byteString.length);
  for (let i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
  }
  return new Blob([ia], { type: mimeString });
},

构建Form上传表单

const blob = dataURItoBlob(imgDataUrl);
const formData = new FormData();
// formData.append('auth', state.token.auth); 可以选择性的加入一些鉴权
formData.append('file', blob);
进行数据上传,我这里使用的是axios
const params = {
   url: '/store/file',
   payload: formData
 };
 const data = await this.upload(params);

我已经对axios进行了封装

export const upload = (params) => {
  const { url, payload } = params
  return axios.post(url, payload, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  }).then(x => x.data)
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
详解CSS样式中的 !important * _ 符号
Mar 09 HTML / CSS
纯CSS3打造属于自己的“小黄人”
Mar 14 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
Feb 24 HTML / CSS
HTML5 Geolocation API的正确使用方法
Dec 04 HTML / CSS
HTML5 Canvas 破碎重组的视频特效的示例代码
Sep 24 HTML / CSS
HTML5 中新的全局属性(整理)
Jul 31 HTML / CSS
html5 css3网站菜单实现代码
Dec 23 HTML / CSS
html5使用canvas画三角形
Dec 15 HTML / CSS
H5新属性audio音频和video视频的控制详解(推荐)
Dec 09 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
Mar 20 HTML / CSS
Html5 webRTC简单实现视频调用的示例代码
Sep 23 HTML / CSS
html2 canvas svg不能识别的解决方案
Jun 03 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
Jul 09 #HTML / CSS
Html5移动端适配IphoneX等机型的方法
Jun 25 #HTML / CSS
微信小程序之html5 canvas绘图并保存到系统相册
Jun 20 #HTML / CSS
使用canvas一步步实现图片打码功能的方法
Jun 17 #HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
Jun 17 #HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
Jun 10 #HTML / CSS
使用html5 canvas绘制圆环动效
Jun 03 #HTML / CSS
You might like
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
javascript 二进制运算技巧解析
2012/11/27 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
详解js访问对象的属性和方法
2018/10/25 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
python脚本设置系统时间的两种方法
2016/02/21 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
高级技校毕业生自荐信
2013/11/18 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
车辆工程专业求职信
2014/06/14 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
端午节活动总结
2014/08/26 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
中学政教处工作总结
2015/08/13 职场文书
环保建议书作文500字
2015/09/14 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL