提取上传文件
对于使用file类型的<input>元素上传的文件,Django将其封装 为UploadedFile对象,存储在请求对象的FILES(伪)字典中,其键名 与表单<input>元素的name属性一致。
例如,当用户提交如下的表单时:
<form action="/upload/" method="POST" enctype="multipart/form-data">
<input type="file" name="uf">
<input type="submit" value="Upload">
</form>
可以在视图函数中使用请求对象的FILES属性读取其UploadedFile对象:
def v_upload(req):
uf = req.FILES['uf']
cnt = uf.read()
return HttpResponse(cnt)
需要注意的是:
- 表单必须以POST方法提交
- 表单编码格式必须设置为multipart/form-data
django.core.files.uploadedfile.UploadedFile
UploadedFile类的主要属性和方法如下:
- name - 上传文件名
- size - 上传文件字节数
- read() - 读取上传文件全部内容。如果文件过大,使用这个方法可能搞死服务器。这时应当使用chunks()生成器
- chunks() - 返回一个生成器,用来迭代读取上传文件内容
详细的属性和方法可以参考官网: Uploaded Files
修改示例代码中的视图v_upload,将上传文件保存到本地的aaa.txt文件