You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python程序向Nextcloud匿名共享空间上传文件?

解决Nextcloud匿名上传空间的Python直接上传问题

正确的上传端点与方法

Nextcloud匿名上传(收件箱共享)的核心是使用WebDAV端点配合共享token,而非普通文件上传接口。之前的405错误通常是因为用错了HTTP方法或端点路径,200无文件则大概率是路径参数配置错误。

关键参数说明

  • 共享token:从匿名上传链接中提取(如链接为https://nc.example.com/s/abc123,token即为abc123)
  • 上传端点:固定为public.php/webdav/,需拼接Nextcloud域名、目标文件名和token参数

Python实现代码

import requests

# 替换为你的实际参数
SHARE_TOKEN = "abc123"
NEXTCLOUD_DOMAIN = "https://your-nextcloud-site.com"
LOCAL_FILE = "/home/user/docs/report.pdf"
TARGET_FILENAME = "report-2024.pdf"

# 构造完整上传URL
upload_url = f"{NEXTCLOUD_DOMAIN}/public.php/webdav/{TARGET_FILENAME}?token={SHARE_TOKEN}"

# 必要请求头,避免Nextcloud拦截非浏览器请求
headers = {"X-Requested-With": "XMLHttpRequest"}

with open(LOCAL_FILE, "rb") as file_obj:
    resp = requests.put(upload_url, data=file_obj, headers=headers)

# 响应判断
if resp.status_code in (201, 204):
    print("上传成功")
else:
    print(f"失败,状态码: {resp.status_code}")
    print(resp.text)

问题排查要点

  1. 405错误:确认使用PUT方法而非POST,Nextcloud WebDAV上传仅接受PUT请求
  2. 200无文件:检查token是否正确、文件名是否拼在webdav/路径后(而非作为参数)、共享是否开启“允许上传”权限
  3. 若上传大文件,可添加Content-Length头或启用requests的分块上传(stream=True)

内容的提问来源于stack exchange,提问作者tfv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:43:12