Найти - Пользователи
Полная версия: Pycurl отправка файла из буфера
Начало » Network » Pycurl отправка файла из буфера
1
int_0x80
Необходимо закачать большое ко-во файлов, которые генерируются программно (хранятся в памяти). Дабы не нагружать диск, хотелось бы отправлять файл без сохранения на диск. Как такое сделать? Отправка идет через multipart form.
Читал этот тред. Там советуют через pycurl.FORM_CONTENTS, pycurl.FORM_FILENAME и pycurl.FORM_CONTENTTYPE. Я попробовал, но на сервер (PHP), приходят данные не в виде файла, а как пост данные (в массив POST, а не FILES) и соответственно скрипт файл не видит.
stosu.ru
Кто ж знает какой вы код написали
Попробуйте что-нибудь другое не curl, например:

http://atlee.ca/software/poster/ или
http://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file
int_0x80
Я бы с радостью, но pycurl я использую не напрямую, а через другую обертку, на которой завязан весь код. В этой обертке (grab) нет возможности отправить файл из буфера, но есть доступ к транспорту (pycurl). Поэтому, вопрос актуален.
Alen
int_0x80
Дабы не нагружать диск, хотелось бы отправлять файл без сохранения на диск

tempfs или ramfs

https://ru.wikipedia.org/wiki/Tmpfs
http://rus-linux.net/nlib.php?name=/MyLDP/file-sys/twofs.html

Memory-mapped file
https://docs.python.org/2/library/mmap.html

io
https://docs.python.org/3.3/library/io.html#module-io

FIFO-файл
http://rus-linux.net/MyLDP/BOOKS/lpg-04/node6.htm#SECTION00730000000000000000
int_0x80
Как оказалось проблема в том, что опция 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')),))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB