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()
)