Отправить файл с помощью POST из Python

У меня есть URL, куда мне нужно отправить видеофайл. По этой причине я написал этот код:

import requests

upload_url = 'https://cs506200.vk.me/upload_video_new.php?act=add_video&mid=21844505&oid=21844505&vid=171170813&fid=0&tag=93bb46ee&hash=e238f469a32fe7eee85a&swfupload=1&api=1'
file_ = {'file': ('video.mp4', open('video.mp4', 'rb'))}
r = requests.post(upload_url, files=file_)

print (r.text)

Я получаю сообщение об ошибке: {"ошибка":"неверный файл"}

Но в этом случае:

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
 </head>
 <body>  
<form enctype="multipart/form-data" action="https://cs506200.vk.me/upload_video_new.php?act=add_video&mid=21844505&oid=21844505&vid=171170813&fid=0&tag=93bb46ee&hash=e238f469a32fe7eee85a&swfupload=1&api=1" method="POST" target="_blank">

<input type="file" name="video_file" />

<input type="submit" value="submit" name="submit" />
</form>
 </body>
</html>

Все работает нормально. Что я делаю не так?


person iMuromec    schedule 04.07.2015    source источник


Ответы (1)


Вы используете неправильное имя поля:

file_ = {'file': ('video.mp4', open('video.mp4', 'rb'))}

Это имя поля file, в то время как ваша форма использует video_file:

<input type="file" name="video_file" />

Важно использовать правильное имя поля, исправьте параметры:

file_ = {'video_file': ('video.mp4', open('video.mp4', 'rb'))}
person Martijn Pieters    schedule 04.07.2015
comment
Ты прав! Два дня не мог решить эту проблему. Благодарю вас! - person iMuromec; 04.07.2015