使用金字塔上传多个文件

时间:2012-12-27 07:54:10

标签: python file-upload pyramid

尝试使用python一次上传多个文件。 upload.html源代码如下:

        <form name="frmRegister" method="post" accept-charset="utf-8" enctype="multipart/form-data" class="form-horizontal">
             <div class="control-group">
                 <div class="controls">
                    <input type="file" name="files" multiple='multiple'>
                 </div>
             </div>
             <div class="control-group">
                 <div class="controls">
                    <input class="btn btn-primary" type="submit" name="btnSubmit" value="Add Product" />
                 </div>
             </div>
        </form>

在我的admin.py中:

    @view_config(context="mycart:resources.Product", name="add", renderer='admin/mall/product/add.jinja2', permission = 'admin')
    @view_config(context="mycart:resources.Product", name="add", request_method="POST",  renderer='admin/mall/product/add.jinja2', permission = 'admin')
    def product_add(context, request):
        if 'btnSubmit' in request.POST:
            print ("files >>> ", request.POST['files'])

在我的终端中,它只显示FieldStorage('files',u'DSC01973.JPG'),而我选择了'DSC01975.JPG','DSC01976.JPG'。

为什么会这样?

2 个答案:

答案 0 :(得分:8)

我找到了一种方法来解决它,我相信还有很多其他的,如果有的话,请随时大声说出来:

    fileslist = request.POST.getall('files')
    print ("My files listing: ", fileslist)
    for f in fileslist:
        print ( "individual files: ", f )

答案 1 :(得分:0)

我可以使用以下功能解决问题:

from cgi import FieldStorage
def get_all_file_data_list(request):
    return [x for x in request.POST.values() if isinstance(x, FieldStorage)]