django批量上传文件的时候报错MultiValueDictKeyError

错误堆栈如下:

[04/Feb/2015 17:58:40] "POST /sample/pcap/resolver/ HTTP/1.1" 500 20072
INFO apps 2015-02-04 17:59:08,601 start process uplaod file
ERROR django.request 2015-02-04 17:59:08,664 Internal Server Error: /sample/pcap/resolver/
Traceback (most recent call last):
  File "D:\DevelopTools\Python2.7\lib\site-packages\django-1.7.1-py2.7.egg\django\core\handlers\base.py", line 111, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\DevelopTools\Python2.7\lib\site-packages\django-1.7.1-py2.7.egg\django\views\decorators\csrf.py", line 57, in wrapped_view
    return view_func(*args, **kwargs)
  File "E:\Projects\Aptana\icenter\icenter\apps\pcaparser\views.py", line 51, in upload_file
    fileobj = request.FILES.get('file',None)
  File "D:\DevelopTools\Python2.7\lib\site-packages\django-1.7.1-py2.7.egg\django\utils\datastructures.py", line 319, in __getitem__
    raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'filename'"
[04/Feb/2015 17:59:11] "POST /sample/pcap/resolver/ HTTP/1.1" 500 20072
INFO apps 2015-02-04 18:01:06,734 start process uplaod file

引入原因:

django 里面上传文件默认只处理单个文件上传,批量上传的时候request.FILES 的类型为 MultiValueDict,这种字典类是特殊定义的,要取得list 需要调用 getlist  方法:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值