Итак, я поигрался с сырым WSGI, cgi.FieldStorage и загрузкой файлов. И я просто не могу понять, как это работает с загрузкой файлов.
Сначала казалось, что он просто хранит в памяти весь файл. И я подумал, хм, это должно быть легко проверить - большой файл должен забивать память! .. И этого не произошло. Тем не менее, когда я запрашиваю файл, это строка, а не итератор, файловый объект или что-то еще.
Я попытался прочитать исходный код модуля cgi и нашел кое-что о временных файлах, но он возвращает чертову строку, а не файловый (-подобный) объект! Итак ... как работает fscking ?!
Вот код, который я использовал:
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()
Заранее спасибо! :)