base64转化字节流 js_JavaScript将base64图片转换成formData并通过AJAX提交的实现方法...

本文介绍如何将base64编码的图片转换为Blob对象,并利用formData通过AJAX提交。首先提供了一个dataURItoBlob函数,将base64数据转化为Blob。接着,创建canvas元素获取JPEG格式的dataURL,再构建formData并将blob添加到其中。最后,使用jQuery AJAX以POST方式提交formData。
摘要由CSDN通过智能技术生成

这是很早以前就在找的一个图片处理方法,由于种种原因base64图片不能直接上传使用,之前为了处理base64也费了很大劲,不想今天竟然找到这段代码。

代码奉上:

一、写一个将base64转换成二进制图片(Blob)的函数

主要思路是整理一下base64的前面几个字符,预处理以后转换成Blob对象,这个之后稍作处理可以放在formData中。

function dataURItoBlob(base64Data) {

var byteString;

if (base64Data.split(',')[0].indexOf('base64') >= 0){

byteString = atob(base64Data.split(',')[1]);

}else{

byteString = unescape(base64Data.split(',')[1]);

}

var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];

var ia = new Uint8Array(byteString.length);

for (var i = 0; i < byteString.length; i++) {

ia[i] = byteString.charCodeAt(i);

}

return new Blob([ia], {type:mimeString});

}

二、构建formData

这里需要借助html5的canvas。

var blob = dataURItoBlob(imageBase64); // 上一步中的函数

var canvas = document.createElement('canvas');

var dataURL = canvas.toDataURL('image/jpeg', 0.5);

var fd = new FormData(document.forms[0]);

fd.append("the_file", blob, 'image.png');

上面的the_file为这个文件的key,等效于input中的name,image.png则是文件名,由于base64的图片信息是不带文件名的,所以可以手动指定一个,这个参数是可选的。

三、使用AJAX提交

为方便,这里使用jQuery的Ajax来演示,上面我们已经构建好了名为fd的formData,这里直接提交即可。

$.ajax({

url: 'http://www.example.com/upload',

method: 'POST',

processData: false, // 必须

contentType: false, // 必须

dataType: 'json',

data: fd,

success:function(data) {

console.log(data);

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值