Como o cgi.FieldStorage armazena arquivos?
Então, eu brinco com WSGI, cgi.FieldStorage e uploads de arquivos. E simplesmente não consigo entender como ele lida com o upload de arquivos.
No começo, parecia que apenas armazenava o arquivo inteiro na memória. E pensei: hm, isso deve ser fácil de testar - um arquivo grande deve entupir a memória! .. E não foi. Ainda assim, quando solicito o arquivo, é uma string, não um iterador, objeto de arquivo ou qualquer cois
Eu tentei ler a fonte do módulo cgi e encontrei algumas coisas sobre arquivos temporários, mas ele retorna uma string em pânico, não um objeto de arquivo! Então ... como isso funciona?!
Aqui está o código que eu usei:
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()
Desde já, obrigado! :)