django上传文件

在实际项目开发中经常用到上传文件之类的需求,最常用的方法就是通过form表单进行上传。后台通过request.FILES获取,下面分点描述如何通过表单进行上传文件。

一、前端代码。

 
{% csrf_token %}
编辑头像

其中, enctype="multipart/form-data"这句话必须要加,你也可以为你的界面添加一些js样式。如果不想通过form自动提交的方式,可以通过ajax构造数据也是可以的。大致格式:(需要关闭type='submit',并修改为'button'添加点击事件)

var form_data = new FormData();
form_data.append('logo', $('#img')[0].files[0]);
form_data.append('csrfmiddlewaretoken', '{{ csrf_token }}');
$.ajax({
    url:'/XXX',
    type:'post',
    data:form_data,
    processData: false,// 告诉jQuery不要去处理发送的数据, 发送对象。
    contentType: false, // 告诉jQuery不要去设置Content-Type请求头
    });

二、django后台代码

后台代码思路如下

request.FILES.get('img')拿到数据

如果有数据则使用file.chunks()保存到本地

保存到阿里云服务器(数据库中只是保存地址)

#1、获取文件
img = request.FILES.get('img')
#2、上传到本地
if img:
    f = open(r'media/{}'.format(file.name), 'wb')  # 先将图片保存到本地
    for line in file.chunks():
        f.write(line)
    f.close()
#3、将本地文件上传到阿里云,具体可以查看阿里云手册
result = bucket.put_object_from_file('{}/{}.jpg'.format("customer", customer), files)
    if result.status == 200:
        return '{}/{}.jpg'.format("customer", customer)   #返回构造的地址
  

 

你可能感兴趣的:(python,django)