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 相关文章推荐
基于CSS3实现立方体自转效果
Mar 01 HTML / CSS
CSS3实现曲线阴影和翘边阴影
May 03 HTML / CSS
CSS3的常见transformation图形变化用法小结
May 13 HTML / CSS
CSS3实现滚动条动画效果代码分享
Aug 03 HTML / CSS
2分钟教你实现环形/扇形菜单(基础版)
Jan 15 HTML / CSS
HTML5-WebSocket实现聊天室示例
Dec 15 HTML / CSS
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
Mar 14 HTML / CSS
前端canvas动画如何转成mp4视频的方法
Jun 17 HTML / CSS
会走动的图形html5时钟示例
Apr 27 HTML / CSS
HTML5+CSS3模仿优酷视频截图功能示例
Jan 05 HTML / CSS
浅谈HTML5 Web Worker的使用
Jan 05 HTML / CSS
详解CSS玩转图片Base64编码
May 25 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
PHP 数组基础知识小结
2010/08/20 PHP
php分页函数完整实例代码
2014/09/22 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
用python 制作图片转pdf工具
2015/01/30 Python
python 判断网络连通的实现方法
2018/04/22 Python
深入理解Python异常处理的哲学
2019/02/01 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
市场部规章制度
2014/01/24 职场文书
学习决心书范文
2014/03/11 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
2016新年年会主持词
2015/07/06 职场文书
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript