我正在尝试从本地驱动器上传视频,但有些内容不是通过python的请求帖子上传文件
import requests
import json
accesstoken = '-----------------'
desc = 'This is test'
titl = 'Testing Video'
vidfbpath = '/tempvideos/0xjwseCVUlU.mp4'
source = open(vidfbpath, 'rb')
# need binary rep of this, not sure if this would do it
fburl = 'https://graph-video.facebook.com/v2.0/1098719680172720/videos?access_token='+str(accesstoken)
# put it all together to post to facebook
m = {'description': desc,
'title': titl,
'source': vidfbpath,}
r = requests.post(fburl, data=m).text
fb_res = json.loads(r)
输出返回InsecurePlatformWarning:真正的SSLContext对象不可用。这可以防止urllib3正确配置SSL,并可能导致某些SSL连接失败。有关更多信息,请参阅https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning。 InsecurePlatformWarning
答案 0 :(得分:2)
InsecurePlatformWarning
是一个警告,而不是错误。您仍有可能成功上传视频文件。
实际上,您的代码将发送内容类型为application/x-www-form-urlencoded
的POST HTTP请求,并且它将适当地对表单数据进行编码。这不实际上传文件,它只是在source
表单变量中发布文件的位置。
我认为您需要在此处使用multipart/form-data
的内容类型described上传文件。指定mp4文件的内容类型也是一个好主意。像这样:
m = {'description': desc,
'title': titl,}
files = {'source': ('0xjwseCVUlU.mp4', open('/tempvideos/0xjwseCVUlU.mp4', 'rb'), 'video/mp4')}
r = requests.post(fburl, data=m, files=files)