错误堆栈如下:
[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()