0

在这里急需帮助。我正在尝试在上传文件的 python 中重新创建这个 curl 命令。

curl -X POST https://invoicing.co/api/v1/invoices/pnelKrqVdK/upload \
  -H 'Content-Type: multipart/form-data' \
  -H 'X-API-TOKEN: TOKEN' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -F _method=PUT \
  -F 'documents[]=@file.png'

我要上传的文件是通过 Saas 工具生成的 pdf,输出是 url:https ://pdf-temp-files.s3.amazonaws.com/ae7f9005db69425a874e5b2e003b9e59/time_sheet.pdf

我编写了以下 python 代码,但对于我的生活,我无法让它工作

import requests

headers = {
    'Content-Type': 'multipart/form-data',
    'X-API-TOKEN': 'token',
    'X-Requested-With': 'XMLHttpRequest',
}

files = {
    '_method': (None,'PUT'),
    'documents[]': 'https://pdf-temp-files.s3.amazonaws.com/ae7f9005db69425a874e5b2e003b9e59/time_sheet.pdf'
}

response = requests.post('https://invoicing.co/api/v1/invoices/pnelKrqVdKz/upload', headers=headers, files=files)

response.status_code

我得到的错误是 405 {'message': 'Method not supported for this route'}

有任何想法吗?

4

1 回答 1

0

也许使用requets.put()方法。而且我认为变量中的 JSON 有效负载files对其内容的格式不正确。希望下面的答案能让您更接近工作程序。

        import requests
        
        headers = {
            'Content-Type': 'multipart/form-data',
            'X-API-TOKEN': 'token',
            'X-Requested-With': 'XMLHttpRequest',
        }

# Uploaded document name
        remote_name = 'https://pdf-temp-files.s3.amazonaws.com/ae7f9005db69425a874e5b2e003b9e59/time_sheet.pdf'    
# Name/path of the document on your local machine
        local_name = "my_time_sheet.pdf"
# Now the put data, `open` the local file.
        files = [ ("file", (remote_name, open(local_name, "rb"), "application/pdf")), ]
     
        response = requests.put('https://invoicing.co/api/v1/invoices/pnelKrqVdKz/upload', headers=headers, files=files)
        
        response.status_code
于 2021-12-10T15:46:51.350 回答