Как разместить файл в Python механизировать, но без какой-либо формы? - PullRequest
0 голосов
/ 05 декабря 2011

Как я могу сделать POST-запрос с файлом в Python механизировать, но без какой-либо существующей формы, мне просто нужно POST-файл "на ровном месте".Есть несколько примеров загрузки файла в стеке, но все они связаны с прикреплением файла в форме.

Мне просто нужно сгенерировать запрос POST с заголовками, такими как:

Content-Length: 218853
Content-Type: application/octet-stream
Cookie: some-cookie-data

И вPOST-данные - только содержимое файла с диска.

Файлы cookie в сеансе браузера должны быть сохранены, и мне нужно прочитать и обработать ответ, который будет равен Content-Type text/plain; с некоторым JSON.

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011

EDIT: Вы сказали, что искали пример механизации. Я не механизированный пользователь, но он поддерживает весь API urllib2. Так что этот ответ SO поможет: Отправить файл, используя POST из скрипта Python

Когда вы создаете сообщение, вы делаете транзакцию HTTP следующим образом:

POST /path/to/script HTTP/1.0
User-Agent: UserAgent/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 7 

hello=world

Таким образом, вы всегда отправляете «форму», потому что именно так почтовый запрос получает данные.

Итак, вам нужно выяснить, однако, сценарий, к которому вы отправляете сообщение, ожидает свои данные (атрибут name формы обычно является ключом, необходимым для обработки ключ = значение), а затем просто создайте свой почтовый запрос.

Убедитесь, что вы используете правильную кодировку (multipart mime) и вычисляете правильную длину содержимого для заголовка.

0 голосов
/ 23 октября 2013

Так получилось, что мне пришлось открыть механизированный код для этого.

  # Mechanize
  from mechanize import Browser, urlopen, Request

  # Submit it!
  image_file    = open(image_filename)
  image_data    = image_file.read()

  request       = Request(url, image_data, {'Content-Type': 'application/octet-stream'})

  response      = urlopen(request)

P.S. LOL, я понимаю, я писал об этом давно:

http://theremichaelwilson.wordpress.com/2011/03/26/posting-a-file-with-mechanize-and-python/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...