一个小东西,框架选择了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对象了。


request.content