Как cgi.FieldStorage хранит файлы?

Итак, я поигрался с сырым 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()

Заранее спасибо! :)

10
задан Justinas 27 July 2011 в 14:45
поделиться