Así que he estado jugando con raw WSGI, cgi.FieldStorage y cargas de archivos. Y simplemente no puedo entender cómo se trata con las cargas de archivos.¿Cómo almacena cgi.FieldStorage los archivos?
Al principio parecía que almacena todo el archivo en la memoria. Y pensé, hm, eso debería ser fácil de probar: ¡un archivo grande debería obstruir la memoria! ... Y no fue así. Aún así, cuando solicito el archivo, es una cadena, no un iterador, objeto de archivo ni nada.
He intentado leer la fuente del módulo cgi y he encontrado algunas cosas sobre los archivos temporales, pero devuelve una cadena maldita, no un objeto de archivo (-like). Entonces ... ¿cómo funciona el trabajo?
Aquí está el código que he utilizado:
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()
Gracias de antemano! :)
Gracias :) Estoy usando principalmente Django pero a veces me gusta jugar un poco con esas cosas de bajo nivel :) – Justinas