Форум сайта python.su
Необходимо закачать большое ко-во файлов, которые генерируются программно (хранятся в памяти). Дабы не нагружать диск, хотелось бы отправлять файл без сохранения на диск. Как такое сделать? Отправка идет через multipart form.
Читал этот тред. Там советуют через pycurl.FORM_CONTENTS, pycurl.FORM_FILENAME и pycurl.FORM_CONTENTTYPE. Я попробовал, но на сервер (PHP), приходят данные не в виде файла, а как пост данные (в массив POST, а не FILES) и соответственно скрипт файл не видит.
Офлайн
Кто ж знает какой вы код написали
Попробуйте что-нибудь другое не curl, например:
http://atlee.ca/software/poster/ или
http://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file
Офлайн
Я бы с радостью, но pycurl я использую не напрямую, а через другую обертку, на которой завязан весь код. В этой обертке (grab) нет возможности отправить файл из буфера, но есть доступ к транспорту (pycurl). Поэтому, вопрос актуален.
Офлайн
int_0x80
Дабы не нагружать диск, хотелось бы отправлять файл без сохранения на диск
Отредактировано Alen (Сен. 2, 2014 17:26:47)
Офлайн
Как оказалось проблема в том, что опция pycurl.FORM_FILENAME работает только с опцией pycurl.FORM_FILE.
Доки
CURLFORM_FILENAME
is used in combination with CURLFORM_FILE. Followed by a pointer to a string, it tells libcurl to use the given string as the filename in the file upload part instead of the actual file name.
c.setopt(pycurl.HTTPPOST, (('file"; filename="abc.txt', (pycurl.FORM_CONTENTS, 'dasdsadas', pycurl.FORM_CONTENTTYPE, 'plain/text')),))
Отредактировано int_0x80 (Сен. 3, 2014 11:57:35)
Офлайн