我想通过API从Python + Django应用程序中以编程方式将pdf文件上传到应用程序。
他们的文件上说:
“为了上传发票,您必须以from.data的形式发布一篇文章,输入键类型为”file“,值为fiscal_document,该值指的是所附加的文件。”
curl -X POST https://api.mercadolibre.com/packs/$PACK_ID/fiscal_documents
-H 'Content-Type: multipart/form-data' \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-F 'fiscal_document=@/home/user/.../Factura_adjunta.pdf'
我正试图通过以下请求来实现这一目标:
response = requests.request("POST", url, headers=headers, files={'fiscal_document': my_file_url}).json()
但是我得到了以下的回应
{
"message": "File cannot be empty",
"error": "bad_request",
"status": 400,
"cause": []
}
我的请求电话可以吗?
在这个示例中,声明了一个本地路径,但我需要从URL中获取文件。我应该把“@”放在-F 'fiscal_document=@/home/user/.../Factura_adjunta.pdf'
里吗?
我应该上传一个字节类型吗?
线索很受欢迎。提前谢谢。
更新1
根据这些建议,我尝试了以下几点:
with open(esta_operacion.factura_pdf.url, 'r') as myFile:
response = requests.request("POST", url, headers=headers, files={'fiscal_document': myFile}).json()
myFile.close()
但我得到了[Errno 2] No such file or directory.......
该文件存在,我可以下载它。
发布于 2021-05-04 14:16:46
我无法重现这个问题,但是您发送的是URL字符串,而不是它的内容。您应该先读取URL,然后上传内容。
以下代码将提供以下内容:
from urllib.request import urlopen
with urlopen(my_file_url) as f:
my_file = f.read()
response = requests.request("POST", url, headers=headers, files={'fiscal_document': my_file})
https://stackoverflow.com/questions/67386219
复制相似问题