基本的文件上传流程
1.前端的代码
前端代码说明:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile">
<input type="submit" value="提交">
</form>
# 1.指定类型 enctype="multipart/form-data"
# 2.提交文件 <input type="file" name="myfile">
# 3.提交按钮: <input type="submit" value="提交">
2.后端代码
代码说明:
class IndexView(View):
def get(self, request):
return render(request, 'files.html')
def post(self, request):
myfile = request.FILES.get('myfile')
with open('somefile.txt', 'wb') as f:
for chunk in myfile.chunks():
f.write(chunk)
return HttpResponse('success')
后端代码说明
myfile = request.FILES.get('myfile')
现在取得文件对象是用: request.FILES.get('文件类型的name')
chunks是文件句柄中的一个方法, 表示可迭代对象数据分流写入
使用模型类来处理上传的文件
0.settings的配置
# 文件上传
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 文件存放目录
MEDIA_URL = '/media/' # 访问的文件内容的url
MEDIA_URL 的配置 访问还要配置url路径
1.models模型类
模型代码说明:
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
files = models.FileField(upload_to='%Y/%m/%d')
保存的字段:files = models.FileField(upload_to='%Y/%m/%d')
参数:upload_to: 表示文件保存的名字
2.前端代码
3.视图
限制上传的文件扩展名
如果想要限制上传文件的扩展名, 需要使用表单类来进行限制 或者使用ModelFrom
1.模型类
2.forms表单类
3.视图