如何修复PyCurl命令不将JSON文件上传到服务器

时间:2019-04-03 15:49:40

标签: python-3.x pycurl

我正在尝试将JSON文件上传到服务器以进行测试。我已尝试使用此代码来提供正确的状态输出,但文件未上传到服务器:

import pycurl
import sys

mosaic_path = sys.argv[1]

file = open(mosaic_path)
print(mosaic_path)

c = pycurl.Curl()
c.setopt(c.URL, 'http://test-URL:21308/mosaic/testing/')
c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json', 'Accept: application/json'])
c.setopt(c.PUT, 1)
c.setopt(c.READDATA, file)
c.perform()
print('Status: %d' % c.getinfo(c.RESPONSE_CODE))
c.close()
file.close()

此cURL命令确实有效:

curl -I -T 2by2_hero_2by2.json http://test-URL:21308/mosaic/testing

(我正在尝试将这些curl命令更新为python脚本)

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以参考以下问题:Uploading a file via pyCurl

您执行此操作的方式将使http请求标头如下所示:

PUT /mosaic/testing/ HTTP/1.1
Host: test-URL:21308
Content-Type: application/json
Accept: application/json

<the content of mosaic_path>

服务器不会将此类标头视为有效的文件传输信号,因为通过http传输文件的唯一方法是使用Content-Type: multipart/form-data并重构发送文件内容的方法(使用边界)。请参阅以下问题:How does HTTP file upload work?