Есть один “секретный сервис”, куда спокойно отсылались файлы через requests.post:
files = {'sample': (file_to_check.name, file_to_check.read(), 'multipart/form-data')} requests.post(scan_url, data={'api_key':apikey, 'private':'true'}, files=files)
Казалось бы, сервис не работает как надо, но, curl отправляет такой файл на ура:
curl -X POST https://secret_url -F "sample=@Квартальный отчет.xls" -F "private=true"
Значит, что-то с питоном не так. Начал тестировать отправку файлов и дополнительных параметров здесь:
http://posttestserver.com
И вот файл:
files = {'sample': (u"Тестовый файл.exe", 'dumb content', 'multipart/form-data')}
То есть, вроде и есть контент, но файл не передан. Если же, передать через urllib2, а не через requests с помощью такого решения: http://python.su/forum/topic/7182/, то на этом тестовом сервисе показывает, что файл был передан, но тот “секретный сервис” до сих пор возвращает ошибку 500.
Что же можеть быть не так, и какое может быть решение?