• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

django框架实现一次性上传多个文件功能示例【批量上传】

python 搞代码 4年前 (2022-01-09) 37次浏览 已收录 0个评论

本文实例讲述了django框架实现一次性上传多个文件功能。分享给大家供大家参考,具体如下:

在用django 写文件上传的时候,从request.FILES['myfiles'] 获取到的文件始终只有一个, 但在HTML页面上明明用 HTML5 的 文件控件选择了多个文件,用的是CHROME  浏览器,一次可以选择多个文件上传。在 Pydev 开启debug模式,查看request 对象,发现上传的多个文件确实在request对象中,但为什么 用request.FILES['myfiles'] 却只能得到一个呢?

前端 html5 上传控件, 我用了jquery file upload

<input type="file" name="myfiles" multiple="">

选择多个文件之后, 然后提交请求,开启pydev debug 模式,查看request内容:

其中request.FILES 的内容为如下:

MultiValueDict: <MultiValueDict: {u’myfiles’: [<InMemoryUploadedFile: 300×600.png (image/png)>, <InMemoryUploadedFile: todo.txt (text/plain)>]}>

很明显,上传的文件的确在其中,但是当用 request.FILES['myfiles'] 得到的确是最后一个。 而不能得到两个文件。跟踪代码发现,request.FILES 的类型为 MultiValueDict,这种字典类是特殊定义的,如果需要取得list 需要调用 getlist  方法,看到这里,豁然开朗,下面是得到上传的多个文件与处理的逻辑

files = request.FILES.getlist('myfiles')
for f in files:
   destination = open('d:/temp/' + f.name,'wb+')
   for chunk in f.chunks(): 
     destination.write(chunk)
   destination.close()

其实很简单的,就是不细心,另外django 默认是只处理单个文件上传的,要一次性批量处理多个文件上传就得采用这种

本文来源gaodai.ma#com搞##代!^码@网3

方法。

希望本文所述对大家基于Django框架的Python程序设计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:django框架实现一次性上传多个文件功能示例【批量上传】

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址