Загрузка python - где находятся tmp/FILES?
Я использую Python 2.4 из cgi и пытаюсь загрузить его в облачный сервис, используя API Python. В php массив $_FILE содержит элемент "tmp", в котором находится файл, пока вы не разместите его там, где хотите. Что эквивалентно в Python?
если я сделаю это
fileitem = form['file']
fileitem.filename
это имя файла
если я печатаю fileitem, массив просто содержит имя файла и то, что выглядит как сам файл.
Я пытаюсь потоковое вещание, и это требует местоположения TMP при использовании PHP API.
2 ответа
Файл является реальным файлом, но cgi.FieldStorage
отмените связь с ним, как только он будет создан, так что он будет существовать только до тех пор, пока вы его оставите открытым, и у него больше не будет реального пути в файловой системе.
Вы можете, однако, изменить это...
Вы можете продлить cgi.FieldStorage
и заменить make_file
способ разместить файл где вы хотите:
import os
import cgi
class MyFieldStorage(cgi.FieldStorage):
def make_file(self, binary=None):
return open(os.path.join('/tmp', self.filename), 'wb')
Вы также должны иметь в виду, что FieldStorage
объект создает реальный файл только в том случае, если он получает более 1000B (в противном случае это cStringIO.StringIO
)
РЕДАКТИРОВАТЬ: cgi
Модуль на самом деле делает файл с tempfile
модуль, так что проверьте это, если вы хотите много подробностей.
Вот фрагмент кода, взятый с моего сайта:
h = open("user_uploaded_file", "wb")
while 1:
data = form["file"].file.read(4096)
if not data:
break
h.write(data)
h.close()
Надеюсь это поможет.