【发布时间】:2011-10-14 08:25:06
【问题描述】:
所以我一直在玩原始的 WSGI、cgi.FieldStorage 和文件上传。而且我只是无法理解它如何处理文件上传。
起初它似乎只是将整个文件存储在内存中。我想嗯,这应该很容易测试 - 一个大文件应该堵塞内存!..它没有。不过,当我请求文件时,它是一个字符串,而不是迭代器、文件对象或任何东西。
我尝试阅读 cgi 模块的源代码并发现了一些关于临时文件的信息,但它返回了一个奇怪的字符串,而不是一个文件(类似)对象!那么......它是如何工作的?!
这是我使用的代码:
import cgi
from wsgiref.simple_server import make_server
def app(environ,start_response):
start_response('200 OK',[('Content-Type','text/html')])
output = """
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="failas" />
<input type="submit" value="Varom" />
</form>
"""
fs = cgi.FieldStorage(fp=environ['wsgi.input'],environ=environ)
f = fs.getfirst('failas')
print type(f)
return output
if __name__ == '__main__' :
httpd = make_server('',8000,app)
print 'Serving'
httpd.serve_forever()
提前致谢! :)
【问题讨论】: