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 clip-path 用法介绍详解
Mar 01 HTML / CSS
css3中transition属性详解
Sep 02 HTML / CSS
浅谈CSS3动画的回调处理
Jul 21 HTML / CSS
CSS3实现各种图形的示例代码
Oct 19 HTML / CSS
CSS实现半透明边框与多重边框的场景分析
Nov 13 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
Aug 02 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
Nov 18 HTML / CSS
html5教程画矩形代码分享
Dec 04 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
Apr 24 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
Apr 05 HTML / CSS
html5自动播放mov格式视频的实例代码
Jan 14 HTML / CSS
面试必问:圣杯布局和双飞翼布局的区别
May 13 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
用Flash图形化数据(二)
2006/10/09 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
python 多线程应用介绍
2012/12/19 Python
Python的Django框架使用入门指引
2015/04/15 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
django 消息框架 message使用详解
2019/07/22 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
python如何运行js语句
2020/09/09 Python
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
市场营销毕业求职信
2014/08/07 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
新课培训心得体会
2014/09/03 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书