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)

当然,也可以上传到存储服务器

我是用的是网易云的对象存储,所以直接把二进制丢给上传文件函数处理

posted @ 2018-12-28 21:40  wangqj  阅读(2957)  评论(1编辑  收藏  举报