Загрузка файлов через Python Mechanize - PullRequest
1 голос
/ 13 марта 2019

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

import mechanize as mc
br = mc.Browser()
br.set_handle_robots(False)
br.select_form(nr=0)
br.form.add_file(open("test.png"), content_type="image/png",
             filename='before',name="ctl00$ContentPlaceHolder1$fileuploadBeforeimages")

br.submit("ctl00$ContentPlaceHolder1$cmdSave") 
# this is supposed to save the form on the webpage. It saves the texts in the other fields, whereas the image does not show up.

Кажется, команда add file работает. Я могу подтвердить это, потому что когда я печатаю br.forms()[0], отображаются данные файла (<FileControl(ctl00$ContentPlaceHolder1$fileuploadBeforeimages=before)>).

Но в этом фрагменте кода нет никаких признаков файла изображения. Я проверил несколько примеров, которые включают br.submit() без какого-либо специального управления кнопками, когда я делаю это, ни одна страница не сохраняется на сайте.

Чего мне не хватает?

Заранее спасибо.

EDIT

Когда я вручную пытаюсь загрузить файл, я вижу всплывающее окно с запросом подтверждения. При проверке это присутствует как

onchange="if (confirm('Upload ' + this.value + '?')) this.form.submit();" 

Я не уверен, является ли это элементом JavaScript, и механизация не может пройти через эту часть для функции загрузки. Может кто-нибудь это подтвердить .?

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете просто поставить 'rb' перед именем изображения следующим образом:

br.form.add_file(open("test.png",'rb'),'images/png',filename,name='file') 
...