所以我一直在玩原始的WSGI,cgi.FieldStorage和文件上傳。我不明白它如何處理文件上傳。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()
提前感謝! :)
謝謝:)我主要使用Django,但有時我喜歡玩那些低級別的東西:) – Justinas