Django-28 文件上传
2021-08-03 本文已影响0人
JuliusL
上传规范-前端[HTML]
文件上传必须为POST提交方式
表单<form>中文件上传时必须带有enctype='multipart/form-data'时才会包含文件内容数据。
表单中用<input type='file' name='xxx'>标签上传文件
上传规范-后端[Django]
视图函数中,用request.FILES取文件框的内容
file = request.FILES['xxx']
说明:
1,FILES的key对应页面中file框的name值
2,file绑定文件流对象
3,file.name文件名
4,file.file文件的字节流数据
配置文件的访问路径和存储路径
在setting.py中设置MEDIA相关配置;Django把用户上传的文件,统称为media资源
Django把用户上传的文件,统称为media资源
#file : settings.py
MEDIA_URL = '/media'
MEDIA_ROOT = 'os.path.join(BASE_DIR,'media')'
MEDIA_URL和MEDIA_ROOT需要手动绑定
步骤:主路由中添加路由
from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
说明:等价于做了MEDIA_URL开头的路由,Django接到该特征请求后去MEDIA_ROOT路径查找资源
文件写入方案1:传统的open方法
![](https://img.haomeiwen.com/i2237943/ec2beca7fc7b6202.png)
文件写入方案2:借助ORM
字段:FileFile(upload='子目录名')
![](https://img.haomeiwen.com/i2237943/2cdc91168827bcfe.png)