咸鱼笔记—用户上传图片


新手刚接触python,跟着教程学的,仅供参考。欢迎各路大神指点。

学习版本: Django 1.8. Python 3.5

上传图片

配置上传文件保存目录

1)新建上传文件保存目录。
在这里插入图片描述
2)配置上传文件保存目录。

MEDIA_ROOT = os.path.join(BASE_DIR,'static/media')

在这里插入图片描述

用户自定义页面上传图片

1)定义用户上传图片的页面并显示,是一个自定义的表单。

<form action="/upload_handle" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="pic">
    <input type="submit" value="upload">	
</form>

2)定义接收上传文件的视图函数。
request对象有一个FILES的属性,类似于字典,通过request.FILES可以获取上传文件的处理对象。
model.py

class PicTest(models.Model):
    goods_pic = models.ImageField(upload_to='img')

view.py

from django.conf import settings
from bookinfo.models import PicTest

def upload_handle(request):
    #获取上传的图片的处理对象
    pic = request.FILES['pic']
    #创建文件
    save_path = '%s/img/%s'%(settings.MEDIA_ROOT,pic.name)
    with open(save_path,'wb') as f:
    #获取上传文件的内容并写到创建的文件中
        for content in pic.chunks():
            f.write(content)
    #在数据库中保存上传记录
    PicTest.objects.create(goods_pic='img/%s'%pic.name)
    #返回
    return HttpResponse("good")

注意:
在django中,上传文件不大于2.5M,文件放在内存中。上传文件大于2.5M,文件内容写到一个临时文件中。
Django处理上传文件的两个类:

FILE_UPLOAD_HANDLERS=
 ("django.core.files.uploadhandler.MemoryFileUploadHandler", #内存
  "django.core.files.uploadhandler.TemporaryFileUploadHandler", #临时文件中)

浏览器输入地址:选择文件
在这里插入图片描述
选择图片上传
在这里插入图片描述
成功显示页面
在这里插入图片描述
上传成功
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45020839/article/details/90765339