Python 如何在urllib2请求中上载文件

Python 如何在urllib2请求中上载文件,python,request,urllib2,kairos-api,Python,Request,Urllib2,Kairos Api,我正在尝试使用kairos面部识别API,我需要上传一个本地文件。api文档说明图像参数必须是“可公开访问的URL或Base64编码的照片”。在中,他们使用data参数作为urllib2.request,并向其传递值字符串,我认为这是json。我的问题是,我如何给他们一个本地文件而不是urlhttp://media.kairos.com/kairos-elizabeth.jpg“?您可以读取本地图像并进行base64编码。然后,您可以将其作为您形成的“值”中的“图像”键值对传递 下面是一个示例代

我正在尝试使用kairos面部识别API,我需要上传一个本地文件。api文档说明图像参数必须是“可公开访问的URL或Base64编码的照片”。在中,他们使用
data
参数作为
urllib2.request
,并向其传递
字符串,我认为这是json。我的问题是,我如何给他们一个本地文件而不是url
http://media.kairos.com/kairos-elizabeth.jpg“

您可以读取本地图像并进行base64编码。然后,您可以将其作为您形成的“值”中的“图像”键值对传递

下面是一个示例代码。它不使用urllib2。但也没什么不同

with open ('messi.jpg','rb') as imgFh:
    img = imgFh.read()

values = {"image": b64encode(img),
    "subject_id": "Messig",
    "gallery_name": "faces"}

您可以将此“值”作为“数据”传递到您的请求中。它应该可以工作。

如果我们能看到您的代码,我们将更容易回答。我也不清楚你在问什么。我了解整个问题,但您是否尝试传递本地文件路径?您也在使用Python2.7还是Python3+?这在某种程度上还取决于您的文件系统以及您是否希望它跨平台。类似r=urllib2.urlopen('file://'+某些路径)的东西应该可以工作。如果你能回答我的几个问题并发布和更新你的代码,我可能会对你有更多的帮助。