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制作精致的照片墙特效
Jun 07 HTML / CSS
CSS3教程(1):什么是CSS3
Apr 02 HTML / CSS
CSS书写规范、顺序和命名规则
Mar 06 HTML / CSS
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
May 07 HTML / CSS
使用CSS3配合IE滤镜实现渐变和投影的效果
Sep 06 HTML / CSS
总结30个CSS3选择器
Apr 13 HTML / CSS
使用纯 CSS 创作一个脉动 loader效果的源码
Sep 28 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
Jan 09 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
Nov 18 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
Oct 16 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
Dec 11 HTML / CSS
HTML5 Canvas实现放大镜效果示例
Mar 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
nodejs之请求路由概述
2014/07/05 NodeJs
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
js实现一键复制功能
2017/03/16 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
python图形用户接口实例详解
2019/12/16 Python
python实现四人制扑克牌游戏
2020/04/22 Python
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
怎样声明接口
2014/09/19 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
实习老师个人总结的自我评价
2013/09/28 职场文书
成考报名单位证明范本
2014/01/16 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
大学毕业感言200字
2014/03/09 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
灵山大佛导游词
2015/02/04 职场文书
青岛导游词
2015/02/12 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
改进工作作风心得体会
2016/01/23 职场文书