admin 管理员组文章数量: 887021
表单
文件上传
1、文件上传时网站开发中非常常见的功能
2、当Django处理上传一个文件的时候,文件数据被放在request.FILES
⑴因此可以在视图函数中使用request.FILES来获取前端传递上来的文件数据
一般方法上传文件
前端代码
前端上传文件也是使用form表单和input标签。只是如果表单时用于上传文件的话,这两个表单需要特定的设置下属性,不然会造成文件无法上传等问题
例1:
⑴编辑模板
<form action="{% url 'index' %}" method="post" enctype="multipart/form-data">
选择需要上传的文件:<input type="file" name="uploadFile">
<input type="submit" value="提交">
</form>
注:
在模板文件中,创建一个form表单,需要特别注意的是:
⑴在有文件上传的form表单中,method属性必须为post
⑵必须指定它的enctype为"multipart/form-data",表明不对字符进行编码
⑶input标签的类型为file
例2:
⑴编辑模板
⑵编辑视图
注:
1、Django处理上传一个文件的时候,文件数据被放在request.FILES对象中
⑴因此可以在视图函数中使用request.FILES.get()来获取前端传递上来的文件数据
⑵request.FILES对象也是一个类字典的数据类型,因此也可以使用get()方法来根据键名来获取里面具体的值
⑶这里建议使用get()方法来获取,不要使用["键名"]来获取:get()方法未获取到时返回None,["键名"]未获取到时会报错
2、文件上传至服务器并保存。自己过程是
⑴前端将整个文件上传至服务器
⑵服务器获取文件并将文件里面的内容读取出来
⑶然后将读取出来的文件内容重新写到我们自己指定的路径文件名中:这里如果直接使用with open("abc.txt") as file的话(没有指定文件的打开路径),那么保存的文件会生成在根目录下面。因此在指定路径时使用" . "来代表当前目录,即" . "代表工程目录(\Web),后面的路径就按着写就好了
⑷而不是:服务器获取文件后,将整个文件保存到指定文件(保存的是文件内容而不是整个文件)
3、这里介绍几个关于上传文件的方法和属性:
⑴myFile.read():从文件中读取整个上传的数据,这个方法只适合小文件
⑵myFile.chunks():按块返回文件,通过在for循环中进行迭代,可以将大文件按块写入到服务器中
⑶myFile.multiple_chunks():这个方法根据myFile的大小,返回True或者False
①当myFile文件
本文标签: 表单
版权声明:本文标题:表单 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1700373308h418811.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论