Python:从请求文件上传迁移到pyCurl

时间:2017-06-28 14:19:08

标签: python python-requests pycurl

我预计从请求迁移到pyCurl会出现问题,我的代码如下所示:

c = pycurl.Curl()
c.setopt(c.POST, 1)
c.setopt(c.URL, self.UploadURL)
c.setopt(c.HTTPPOST, [("files[]", (c.FORM_FILE, local_path))])
c.perform()
c.close()

但它总是给我一个奇怪的"404 - Not Found"错误,self.UploadURL看起来像这样:

http://s1.example.com/Upload?e=hB3DRDMTrp1qXfLYcGlb7IEDgQFgg7j5_WxnaYzJckfmCXT_ggm4f4T6Byk1WJWpkpiXzp2R8N1bG3J0qixKbJ7Nc1k5hR5dUTGsHjxzLgG0QL8Pl5a95ygehKcAzz5jpirHKWDJQ1c_uJW9UbuXMw&pv=2

正如您所看到的,它有非标准字符,如?, =, _, &,并且很长:P。另外:我甚至不知道我的脚本发送到服务器的是什么,因为程序Fiddler4没有捕获到该请求o_O

另外,这是工作代码,但它使用请求(我想要pyCurl):

files = MultipartEncoder[("files[]", (filename, filedata, 'application/octet-stream'))]
UploadFile = requests.post(self.UploadURL, data=files, headers={'Content-Type': files.content_type}, stream=True)

1 个答案:

答案 0 :(得分:0)

尝试使用base64编码进行查询参数。