Python请求库MultiPart FormData POST request issu

2024-04-23 21:43:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个工作的curl命令,如下所示:

    curl -X POST \
      http://localhost:7777/upload \
      -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
      -F file_name=temp.py \
      -F file_content=@/Users/blah/requirements.txt \
      -F d_name=blah \
      -F owner=blah \
      -F name=blah \
      -F local_git_path=blah \
      -F local_git_hash=blah

当然,我摆弄邮递员,让我的邮件从我的电脑到我的测试服务。我面临的问题是当我为我的服务器编写client时。我的上述转换示例如下:

^{pr2}$

这真的开始让我恼火了,因为POST工作得很好,但是我在服务器端收到的文件内容是一个空文件。这只发生在python端。在

但是cURL不会发生。我对request模块很满意。我宁愿不改。在

另外,Web服务器是一个flask应用程序,因为我的cURL工作正常,所以看起来工作得很好。在

更新#1 还尝试了以下方法,这是我在改用webkits之前的第一种方法。这真的让我大吃一惊——我从我的网络服务器上得到了404。这很奇怪,因为我的cURL仍在工作,这表明我的Web服务器工作正常。在

def upload(self, file_path):
    headers = {
        'Content-Type': "application/json",
        'content-type': "multipart/form-data"
    }
    api_url = os.path.join(Config().get_url(), "upload")
    files_dict = dict(file_content=open(file_path, "rb"),
                      file_name=(None, "temp.py"),
                      dag_name=(None, "dag_name"),
                      owner=(None, "blah"),
                      name=(None, "blah"),
                      local_git_path=(None, "blah"),
                      local_git_hash=(None, "blah"))
    response = requests.post(url=api_url, files=files_dict, headers=headers)
    return json.loads(response.text)

Tags: pathnamegit服务器noneurllocalfiles