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动画效果之animation的常用样式
Mar 09 HTML / CSS
CSS3教程(7):CSS3嵌入字体
Apr 02 HTML / CSS
css3隔行变换色实现示例
Feb 19 HTML / CSS
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
Apr 26 HTML / CSS
css3实现二维码扫描特效的示例
Oct 29 HTML / CSS
html5 canvas 画图教程案例分析
Nov 23 HTML / CSS
HTML5 贪吃蛇游戏实现思路及源代码
Sep 03 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
May 11 HTML / CSS
带你认识HTML5中的WebSocket
May 22 HTML / CSS
HTML5拖放效果的实现代码
Nov 17 HTML / CSS
移动端html5模拟长按事件的实现方法
Sep 30 HTML / CSS
教你做个可爱的css滑动导航条
Jun 15 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中利用explode函数分割字符串到数组
2014/02/08 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
jQuery入门知识简介
2010/03/04 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
详解如何较好的使用js
2016/12/16 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
vuex实现的简单购物车功能示例
2019/02/13 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
Python lambda函数基本用法实例分析
2018/03/16 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
Django框架视图介绍与使用详解
2019/07/18 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
办公室文秘自我评价
2013/09/21 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
担保书怎么写
2014/04/01 职场文书
中秋手机店促销方案
2014/06/16 职场文书
新闻人物通讯稿
2014/10/09 职场文书
vue实现锚点定位功能
2021/06/29 Vue.js