处理来自 WSGI 请求的文件

Handle file from WSGI request

问题

处理通过 WSGI POST 请求上传的文件的好方法是什么?

更多信息

到目前为止,我能够从 environ[wsgi.input] 读取原始 POST 数据。此时我遇到的问题是与文件相关的信息和文件本身被挤在一个字符串中:

'------WebKitFormBoundarymzmB1wyHKjyqZrDm
Content-Disposition:表单数据;名字="file";文件名="new file.wav"
内容类型:audio/wav

这是内容
这是内容
这是内容
这是内容
这是内容

------WebKitFormBoundarymzmB1wyHKjyqZrDm--
'

我应该使用 python 中的库来更干净地处理信息吗?最终,我想获取文件内容,然后转身上传到 Amazon S3。

您可以使用 cgi.FieldStorage.

import cgi
form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ)
f = form['file'].file
# You can use `f` as a file object: f.read(...)

通常你想要比原始 WSGI 多得多的抽象。考虑 frameworks that run on WSGI.