Django中的文件上传

129 阅读1分钟

目的在于将上传的图片保存到静态资源目录中

1.配置静态资源目录

# settting.py

STATIC_URL = '/static/'
STATICFLIES_DIRS = (os.path.join(BASE_DIR,"static"))

2.假如在某路径下有一个表单

<form method="post" action="{% url 'upload' %}" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="img"><br>
    <input type="submit" value="上传">
</form>

这个表单将图片文件上传到nameupload的视图中,方式为post

3.获取并且保存


from django.http import HttpResponse
from PIL import Image
from time import time
def upload(request):
    myfile = request.FILES.get('img',None)
    if not myfile:
        return HttpResponse('上传失败')

    # 加工文件名
    filename = str(time())+"."+myfile.name.split('.').pop()

    # 写入文件的操作
    destination = open("./static/pics/"+filename,"wb+")
    for chunk in myfile.chunks():      # 分块写入文件
        destination.write(chunk)
    destination.close()

    # 执行图片缩放
    im = Image.open("./static/pics/"+filename)
    # 缩放到75*75(缩放后的宽高比例不变):
    im.thumbnail((75, 75))
    # 把缩放后的图像用jpeg格式保存:
    im.save("./static/pics/s_"+filename,None)

    return HttpResponse('<h3>上传成功</h3>')

需要用到pillow,下载命令:pip install pillow

4.查看图片

项目目录-static-pics中查看到图片