我们想用python上传一个字符串。 我找到了here一些示例并创建了以下脚本。
import requests
url = 'https://URL/fileupload?FileName=file.csv'
headers = {'content-type': 'octet-stream'}
files = {'file': ('ID,Name\n1,test')}
r = requests.post(url, files=files, headers=headers, auth=('user', 'password'))
上传工作正常,但输出包含一些意外的行。
--ec7b507f800f48ab85b7b36ef40cfc44
Content-Disposition: form-data; name="file"; filename="file"
ID,Name
1,test
--ec7b507f800f48ab85b7b36ef40cfc44--
目标是仅从files = {'file': ('ID,Name\n1,test')}
上传以下内容:
ID,Name
1,test
这怎么可能?
答案 0 :(得分:0)
使用files
参数时,requests
会创建发布文件所需的标题和正文
如果您不希望您的请求格式化,则可以使用data
参数。
url = 'http://httpbin.org/anything'
headers = {'content-type': 'application/octet-stream'}
files = {'file': 'ID,Name\n1,test'}
r = requests.post(url, data=files, headers=headers, auth=('user', 'password'))
print(r.request.body)
file=ID%2CName%0A1%2Ctest
请注意,将字典传递给data
时,它会进行网址编码。如果您想在没有任何编码的情况下提交数据,可以使用字符串。
url = 'http://httpbin.org/anything'
headers = {'content-type': 'application/octet-stream'}
files = 'ID,Name\n1,test'
r = requests.post(url, data=files, headers=headers, auth=('user', 'password'))
print(r.request.body)
ID,Name
1,test