Python 将数据放入Webdav服务器时写入文件的标题信息
我有以下代码:Python 将数据放入Webdav服务器时写入文件的标题信息,python,python-requests,Python,Python Requests,我有以下代码: r = requests.put( config.get('webdav', 'url') + file_name, auth=( config.get('webdav', 'username'), config.get('webdav', 'password') ), files={ "files": open(os
r = requests.put(
config.get('webdav', 'url') + file_name,
auth=(
config.get('webdav', 'username'),
config.get('webdav', 'password')
),
files={
"files": open(os.path.expanduser(charges_file_path), 'rb')
}
)
这相当简单。它只需向webdav服务器调用PUT
请求,并将文件(纯文本)中的数据推送到服务器
它是有效的,除了一个奇怪的问题(或者如果我只是遗漏了一些小问题,可能就不那么奇怪了)。当我对文件执行GET
操作时,或者直接在服务器上查看文件时,文件本身包含标题信息:
--55e72d74a10b423590cd4faa68212192
内容配置:表单数据;name=“文件”;filename=“test_file6.txt”
(文件和数据)
--55e72d74a10b423590cd4faa68212192--
我一直找不到解决这个问题的理由或方法。当我从命令行卷曲文件时,效果很好
有什么想法吗?我不太熟悉Python
请求的工作原理,但在阅读了一些文档并发现有人在向Zendesk()发送文件时遇到类似问题后,您可能希望尝试在请求中使用数据(或json
)参数,而不是文件。此外,如果此处适用,可能会附加一个带有文件名的params
,与我链接的帖子类似
另一件事是在该请求上放置内容类型
标题
i、 e
是的,运气不好。我也有类似的问题,这让我找到了解决办法。通过常规HTTP PUT/POST操作,您可以使用多部分表单数据进行文件上载,但WebDAV服务器通常希望正文直接包含文件。
requests.put(
...,
headers={'Content-Type': 'application/binary'},
data=open(os.path.expanduser(charges_file_path), 'rb').read()
)