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 01 HTML / CSS
CSS3制作圆角图片和椭圆形图片
Jul 08 HTML / CSS
浅析CSS3 用text-overflow解决文字排版问题
Oct 28 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
Apr 26 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
Jun 20 HTML / CSS
HTML5地理定位实例
Oct 15 HTML / CSS
HTML5实现动画效果的方式汇总
Feb 29 HTML / CSS
HTML5进阶段内联标签汇总(小篇)
Jul 13 HTML / CSS
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
Mar 30 HTML / CSS
CSS实现多个元素在盒子内两端对齐效果
Mar 30 HTML / CSS
教你做个可爱的css滑动导航条
Jun 15 HTML / CSS
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
Dec 06 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连接mysql数据库代码
2009/03/10 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
PHP重载基础知识回顾
2020/09/10 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
深入学习jQuery中的data()
2016/12/22 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
tornado 多进程模式解析
2018/01/15 Python
Python生成器generator用法示例
2018/08/10 Python
Python实现多属性排序的方法
2018/12/05 Python
pandas删除指定行详解
2019/04/04 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
Python中pass的作用与使用教程
2020/11/13 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
音乐之声音乐广播稿
2014/09/10 职场文书
公司股东合作协议书
2014/09/14 职场文书
外科护士长工作总结
2015/08/12 职场文书