一个小东西,框架选择了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对象了。
😊 如果你喜欢这篇文章,也欢迎了解我的书: 《Python 工匠:案例、技巧与工程实践》 。它专注于编程基础素养与 Python 高级技巧的结合,是一本广受好评、适合许多人的 Python 进阶书。