咸鱼笔记—用户上传图片
新手刚接触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')
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", #临时文件中)
浏览器输入地址:选择文件
选择图片上传
成功显示页面
上传成功