将头信息写入Webdav时写入文件

2024-09-27 20:20:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

    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 Content-Disposition: form-data; name="files"; filename="test_file6.txt"

(file_data)

--55e72d74a10b423590cd4faa68212192--

我一直找不到解决这个问题的理由或方法。当我从命令行卷曲文件时,它工作正常。你知道吗

有什么想法吗?你知道吗


Tags: 文件path代码name服务器authconfigurl
1条回答
网友
1楼 · 发布于 2024-09-27 20:20:23

我不太熟悉Pythonrequests的工作原理,但是在阅读了一些文档并发现有人在向Zendesk(this post)发送文件时遇到了类似的问题之后,您可能希望尝试在请求中使用data(或json)参数而不是files。另外,如果这里适用的话,也可以附加一个params文件名,就像我链接的帖子一样。你知道吗

要做的另一件事是在这个请求上放置一个Content-Type头。你知道吗

requests.put(
  ...,
  headers={'Content-Type': 'application/binary'},
  data=open(os.path.expanduser(charges_file_path), 'rb').read()
)

相关问题 更多 >

    热门问题