gpt4 book ai didi

python - 无法使用 python 和 POST API 发布文件?

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:19 24 4
gpt4 key购买 nike

我正在使用 Postman 发布数据,它工作正常。但是当我在 python 中转换它时,它无法读取我的文件。它在文件中提供空数据,我不知道出了什么问题。

这是Python代码:

import requests
url = "http://localhost:63387/api/clientdetail"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; " \
"name=\"ip\"\r\n\r\n10.2.3.5\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; " \
"name=\"file\"; filename=\"D:\\data.json\"\r\n" \
"Content-Type: application/json\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'cache-control': "no-cache",
'Postman-Token': "adcea715-e97c-4374-80b7-30094e0861c3"
}
response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)

我从 postman 那里复制了这个。这里我传递两个参数字符串和文件,因此字符串工作正常,但文件给出 null。

当我使用 postman 执行此操作时,它给出了正确的

谁能帮我???

这是 postman HTTP 代码

POST /api/clientdetail HTTP/1.1
Host: localhost:63387
cache-control: no-cache
Postman-Token: d614bdb0-eadd-4d29-9132-bc9443176082
Content-Type: multipart/form-data; boundary=----
WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="ip"
10.2.3.5
Content-Disposition: form-data; name="file"; filename="D:\data.json"
------WebKitFormBoundary7MA4YWxkTrZu0gW--

最佳答案

唯一阻止您直接在文件对象上使用 urlopen 的是内置文件对象缺少 len 定义。一个简单的方法是创建一个子类,它为 urlopen 提供正确的文件。我还修改了下面文件中的 Content-Type header 。

import os
import urllib2
class EnhancedFile(file):
def __init__(self, *args, **keyws):
file.__init__(self, *args, **keyws)

def __len__(self):
return int(os.fstat(self.fileno())[6])

theFile = EnhancedFile('a.xml', 'r')
theUrl = "http://example.com/abcde"
theHeaders= {'Content-Type': 'text/xml'}

theRequest = urllib2.Request(theUrl, theFile, theHeaders)

response = urllib2.urlopen(theRequest)

theFile.close()


for line in response:
print line

关于python - 无法使用 python 和 POST API 发布文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53758788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com