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实现元素环绕中心点布局的方法示例
Jan 15 HTML / CSS
CSS3 animation ? steps 函数详解
Aug 30 HTML / CSS
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
Jan 08 HTML / CSS
canvas学习笔记之2d画布基础的实现
Feb 21 HTML / CSS
html5 Canvas绘制线条 closePath()实例代码
May 10 HTML / CSS
用HTML5实现手机摇一摇的功能的教程
Oct 30 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
Jan 31 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
Aug 03 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
Jan 30 HTML / CSS
HTML5实现移动端复制功能
Apr 19 HTML / CSS
HTML5新增form控件和表单属性实例代码详解
May 15 HTML / CSS
使用canvas生成含有微信头像的邀请海报没有微信头像问题
Oct 29 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
ajax缓存问题解决途径
2006/12/06 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
nginx下安装php7+php5
2016/07/31 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
python实现socket端口重定向示例
2014/02/10 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
分析python请求数据
2018/08/19 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
python能做哪些生活有趣的事情
2020/09/09 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
制冷与电控专业应届生求职信
2013/11/11 职场文书
计算机应用专业推荐信
2013/11/13 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
进行数据处理的6个 Python 代码块分享
2022/04/06 Python