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 相关文章推荐
HTML5 canvas实现雪花飘落特效
Mar 08 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
Jan 21 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
Mar 25 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
Jun 06 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
Jun 28 HTML / CSS
Html5 语法与规则简要概述
Jul 29 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
May 07 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
Oct 08 HTML / CSS
CSS3实现三角形不断放大效果
Apr 13 HTML / CSS
纯CSS3实现div按照顺序出入效果
Jul 15 HTML / CSS
CSS使用Flex和Grid布局实现3D骰子
Aug 05 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
phalcon框架使用指南
2016/02/23 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python编程中的异常处理教程
2015/08/21 Python
Python使用gensim计算文档相似性
2016/04/10 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
室内设计专业学生的自我评价分享
2013/11/27 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书
用python画城市轮播地图
2021/05/28 Python
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android