在twisted.web中处理上传文件

  一个小东西,框架选择了twisted.web,有一个文件上传的需求,临做的时候才想到从没有在twisted.web处理过文件上传的问题,貌似twisted.web对这方面的支持也不行,因为直接从request.args里面读出来的内容是str的文件内容,filename信息什么的一概没有。

  于是想了一下还是用cgi模块来处理吧。

def parse_upload(request):
    """
    通过cgi的FieldStorage来解析出文件
    """
    request.content.seek(0, 0)
    del request.args["upload_image"]
    env = {
        'REQUEST_METHOD': request.method,
        'CONTENT_TYPE': request.getHeader("content-type"),
        'CONTENT_LENGTH': request.getHeader("content-length")
    }
    return cgi.FieldStorage(fp=request.content, environ=env, keep_blank_values=1)    

  这样处理后,就能从request对象中获得FieldStorage对象了。