var base64String = /*base64图片串*/;

//这里对base64串进行操作,去掉url头,并转换为byte
var bytes = window.atob(base64String.split(',')[1]); //处理异常,将ASCII码小于0的转换为大于0,这里有两种写法
第一种:
var ab = new ArrayBuffer(bytes.length);
var ia = new Uint8Array(ab);
for(var i = 0; i < bytes.length; i++){
ia[i] = bytes.charCodeAt(i); //这里有点疑惑,ia是怎么改变ab的?注:①
}
//Blob对象
var blob = new Blob([ab], {type: 'image/jpeg'}); //type为图片的格式 //FormData对象
var fd = new FormData();
//TDOD Ajax或者其他方式上传FormData对象 //FormData对象接受三个参数,第三个参数为文件名,通常我们只传前两个参数,第三个参数不传则使用默认文件名,这里使用的Blob对象,所以需要一个文件名,用时间戳代替。
fd.append('file',blob, Date.now() + '.jpg');
第二种:
var array = [];
for(var i = 0; i < bytes.length; i++){
array.push(bytes.charCodeAt(i));
}
var blob = new Blob([new Uint8Array(array)], {type: 'image/jpeg'});
var fd = new FormData();
fd.append('file',blob, Date.now() + '.jpg');
//TDOD Ajax或者其他方式上传FormData对象

原理:利用ArrayBuffer、Blob和FormData进行图片上传

最新文章

  1. easyUi load方法重新加载表单的数据
  2. 初始Python类
  3. IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决办法
  4. HTML中动态图片切换JQuery实现
  5. POJ 1966 Cable TV Network (无向图点连通度)
  6. Android 如何修改默认的searchable items。
  7. istringstream
  8. java集合_collection子接口 list的特有方法,ArrayList类体现
  9. stm32开发笔记一:使用固件库在RealView-MDK中新建工程(上)
  10. angularJS环境安装
  11. 原生应用native、Web应用、混合应用hybrid:3者的优缺点解析
  12. Android中常用的颜色
  13. [js高手之路] javascript面向对象写法与应用
  14. 利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统
  15. [转]gitlab cicd (二)系列之安装git-runner rpm安装方式
  16. 用寄快递模拟数据在网络中的传送过程,发送一个ip数据报到接受这个ip数据报经历的过程
  17. x64 assembler fun-facts(转载)
  18. 《算法》第四章部分程序 part 9
  19. PARAMETERS 指令
  20. Java 基本语法---Java数组

热门文章

  1. DHCP报文交互流程
  2. office 2016
  3. vue.js_①
  4. MVC 拦截器
  5. Swift3.0-基本运算符
  6. 使用git commit命令时会提示&quot;Please tell me who you are&quot;
  7. 谈谈spring mvc与struts的区别
  8. winform和wpf里必知的多线程知识
  9. 利用django打造自己的工作流平台(二):疫情统计系统
  10. python关键日期计算