ajax以base64上传图片到django
一、前端代码(将图片转换为base64)
$('#input').change(function(event) { function loadImg(){ //获取文件 var file = $("#input")[0].files[0]; //创建读取文件的对象 var reader = new FileReader(); //创建文件读取相关的变量 // var imgFile; //为文件读取成功设置事件 reader.onload=function(e) { imgFile = e.target.result; }; //正式读取文件 reader.readAsDataURL(file); } loadImg(); });
二、django代码
1、接收到前端传来的base64后需要做一些处理
这个是请求中携带的base64图片,这样的base64放在前端可以直接使用,但是python中不可以
我们需要将data:image/jpeg;base64,这段删除掉,可以直接使用split(',')
2、去掉不需要的部分后,使用base64解编码
import base64 data = base64.b64decode(b64_data)
解码后可以保存在本地
with open('test.jpeg', 'wb') as f: f.write(data)
当然,也可以上传到存储服务器
我是用的是网易云的对象存储,所以直接把二进制丢给上传文件函数处理