【问题标题】:How to upload a pdf by sending a POST Request to an API如何通过向 API 发送 POST 请求来上传 pdf
【发布时间】:2017-03-24 21:53:57
【问题描述】:

我尝试通过向 R 和 Python 中的 API 发送 POST 请求来上传 pdf,但我没有取得很大成功。

这是我在 R 中的代码

library(httr)

url <- "https://envoc-apply-api.azurewebsites.net/api/apply"
POST(url, body = upload_file("filename.pdf"))

当我想要状态为 202 时,我收到的状态是 500

我也尝试过使用确切的路径,而不仅仅是文件名,但出现文件不存在错误

我的 Python 代码

import requests

url ='https://envoc-apply-api.azurewebsites.net/api/apply'
files = {'file': open('filename.pdf', 'rb')}
r = requests.post(url, files=files)

我收到错误

FileNotFoundError: [Errno 2] No such file or directory: 'filename.pdf'

我一直在尝试使用这些来指导作为示例。

Rhttps://cran.r-project.org/web/packages/httr/vignettes/quickstart.html

Pythonhttp://requests.readthedocs.io/en/latest/user/quickstart/

如果您需要更多信息,请告诉我。 任何帮助将不胜感激。

【问题讨论】:

    标签: python r http-post python-requests httr


    【解决方案1】:

    您需要指定文件的完整路径:

    import requests
    
    url ='https://envoc-apply-api.azurewebsites.net/api/apply'
    files = {'file': open('C:\Users\me\filename.pdf', 'rb')}
    r = requests.post(url, files=files)
    

    或类似的东西:否则它在尝试打开时永远找不到 filename.pdf。

    【讨论】:

    • 感谢您的回答。我输入了完整路径,这是我收到的错误。 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
    • 尝试转义反斜杠:open('C:\\Users\\me\\filename.pdf')
    • 添加反冲后,它运行时没有错误,但我没有收到状态更新,我不确定我的上传是否通过。
    • envoc-apply-api.azurewebsites.net你可能需要添加一堆额外的参数,而不仅仅是文件名。
    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 2020-09-09
    • 2017-04-30
    相关资源
    最近更新 更多