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实例分享--超炫checkbox复选框和radio单选框
Sep 01 HTML / CSS
详解CSS3选择器的使用方法汇总
Nov 24 HTML / CSS
几个CSS3的flex弹性盒模型布局的简单例子演示
May 12 HTML / CSS
CSS3使用transition属性实现过渡效果
Apr 18 HTML / CSS
利用简洁的图片预加载组件提升html5移动页面的用户体验
Mar 11 HTML / CSS
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
Dec 13 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
Jan 31 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
Mar 08 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
Dec 29 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
Mar 15 HTML / CSS
纯CSS如何禁止用户复制网页的内容
Nov 01 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 一个页面执行时间类代码
2010/03/05 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
DWR Ext 加载数据
2009/03/22 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
npm scripts 使用指南详解
2018/10/08 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
python中的代码编码格式转换问题
2015/06/10 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
python ChainMap的使用和说明详解
2019/06/11 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
pytorch之添加BN的实现
2020/01/06 Python
python构造IP报文实例
2020/05/05 Python
Python 爬虫的原理
2020/07/30 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
天鹅的故事教学反思
2014/02/04 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
2014公司年终工作总结
2014/12/19 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
校园安全主题班会
2015/08/12 职场文书
2016年公司新年寄语
2015/08/17 职场文书
学习党章心得体会2016
2016/01/15 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
sql注入教程之类型以及提交注入
2021/08/02 MySQL
使用javascript解析二维码的三种方式
2021/11/11 Javascript
MySQL分布式恢复进阶
2022/07/23 MySQL