OpenListTeam / OpenListTeam/OpenList

[BUG] 通过webdav上传到移动网盘报错

Open
#1,834 10 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Go
Stars
24.7k
Forks
2.3k
Avg merge
1d 20h
Merged PRs (30d)
36

Description

请确认以下事项
  • 我已确认阅读并同意 AGPL-3.0 第15条
    本程序不提供任何明示或暗示的担保,使用风险由您自行承担。

  • 我已确认阅读并同意 AGPL-3.0 第16条
    无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。

  • 我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。

  • 我已确认阅读了OpenList文档

  • 我已确认没有重复的问题或讨论。

  • 我已确认是OpenList的问题,而不是其他原因(例如 网络依赖操作)。

  • 我认为此问题必须由OpenList处理,而非第三方。

  • 我已确认这个问题在最新版本中没有被修复。

OpenList 版本(必填)

v4.1.8

使用的存储驱动(必填)

中国移动云盘

问题描述(必填)

飞牛通过webdav挂载openlist,备份大文件(1G以上)到中国移动网盘报错。网盘账户为钻石套餐。同配置的电信和Google网盘可以正常备份。

日志(必填)
ERRO[2025-12-19 15:37:18] failed put /fnos-cmcc/IYY520/Photos/MobileBackup/HUAWEI HBN-AL00/DCIM/2025/2: Put "https://hcyykj-eos-hhht5-01.eos.huhehaote-8.cmecloud.cn/9c959639bc36495eada3695a32f82086?partNumber=4&uploadId=2~ws19cIA5nH5uHsyBZ1ufVCZxDIGcN&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20251219T153618Z&X-Amz-SignedHeaders=content-length%3Bhost&X-Amz-Expires=7200&X-Amz-Credential=JX8QMYUJCVX3YB0PN5Y%0251219%2Fdefault%2Fs3%2Faws4_request&t=1&u=103905023671015617&ot=personal&oi=1039905023671015617&f=FrlhVs5q6YNkYPu5tpPf7sL59rROm_W&ext=eyJ1dCI6MX0%3D&X-Amz-Signature=26302d24bfb3cfe08592adeba191757d12a11f4b3828fe56f64229331f88": context canceled
github.com/OpenListTeam/OpenList/v4/internal/op.Put
	/home/runner/work/OpenList/OpenList/internal/op/fs.go:597
github.com/OpenListTeam/OpenList/v4/drivers/crypt.(*Crypt).Put
	/home/runner/work/OpenList/OpenList/drivers/crypt/driver.go:407
github.com/OpenListTeam/OpenList/v4/internal/op.Put
	/home/runner/work/OpenList/OpenList/internal/op/fs.go:571
github.com/OpenListTeam/OpenList/v4/internal/fs.putDirectly
	/home/runner/work/OpenList/OpenList/internal/fs/put.go:106
github.com/OpenListTeam/OpenList/v4/internal/fs.PutDirectly
	/home/runner/work/OpenList/OpenList/internal/fs/fs.go:112
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).handlePut
	/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:374
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).ServeHTTP
	/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:73
github.com/OpenListTeam/OpenList/v4/server.ServeWebDAV
	/home/runner/work/OpenList/OpenList/server/webdav.go:48
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDav.DownloadRateLimiter.func3
	/home/runner/work/OpenList/OpenList/server/middlewares/limit.go:51
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDav.UploadRateLimiter.func2
	/home/runner/work/OpenList/OpenList/server/middlewares/limit.go:28
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDAVAuth
	/home/runner/work/OpenList/OpenList/server/webdav.go:147
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server/middlewares.StoragesLoaded
	/home/runner/work/OpenList/OpenList/server/middlewares/check.go:35
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/recovery.go:102
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/logger.go:249
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:644
github.com/gin-gonic/gin.(*Engine).ServeHTTP
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:600
net/http.serverHandler.ServeHTTP
	/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:3340
net/http.(*conn).serve
	/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:2109
runtime.goexit
	/opt/hostedtoolcache/go/1.25.0/x64/src/runtime/asm_amd64.s:1693
github.com/OpenListTeam/OpenList/v4/internal/op.Put
	/home/runner/work/OpenList/OpenList/internal/op/fs.go:597
github.com/OpenListTeam/OpenList/v4/internal/fs.putDirectly
	/home/runner/work/OpenList/OpenList/internal/fs/put.go:106
github.com/OpenListTeam/OpenList/v4/internal/fs.PutDirectly
	/home/runner/work/OpenList/OpenList/internal/fs/fs.go:112
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).handlePut
	/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:374
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).ServeHTTP
	/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:73
github.com/OpenListTeam/OpenList/v4/server.ServeWebDAV
	/home/runner/work/OpenList/OpenList/server/webdav.go:48
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDav.DownloadRateLimiter.func3
	/home/runner/work/OpenList/OpenList/server/middlewares/limit.go:51
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDav.UploadRateLimiter.func2
	/home/runner/work/OpenList/OpenList/server/middlewares/limit.go:28
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDAVAuth
	/home/runner/work/OpenList/OpenList/server/webdav.go:147
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server/middlewares.StoragesLoaded
	/home/runner/work/OpenList/OpenList/server/middlewares/check.go:35
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/recovery.go:102
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/logger.go:249
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:644
github.com/gin-gonic/gin.(*Engine).ServeHTTP
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:600
net/http.serverHandler.ServeHTTP
	/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:3340
net/http.(*conn).serve
	/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:2109
runtime.goexit
	/opt/hostedtoolcache/go/1.25.0/x64/src/runtime/asm_amd64.s:1693 
ERRO[2025-12-19 15:37:18] PUT /dav/fnos-cmcc/IYY520/Photos/MobileBackup/HUAWEI HBN-AL00/DCIM/2025/2/VID_20250209_174513.mp4 Put "https://hcyykj-eos-hhht5-01.eos.huhehaote-8.cmecloud.cn/9c959636495eadaeaa3695a32f82086?partNumber=4&uploadId=2~ws19cIA5nH5qhCZxDIGcN&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20251219T153618Z&X-Amz-SignedHeaders=content-length%3Bhost&X-Amz-Expires=7200&X-Amz-Credential=JX8QMYUJCXX3YB0PN5Y%2F20251219%2Fdefault%2Fs3%2Faws4_request&t=1&u=103905023671015617&ot=personal&oi=103990502671015617&f=FrlhVs5q6YNaFkYPu5pPf7sL59rROm_W&ext=ey1dCI6MX0%3D&X-Amz-Signature=26302d24bfb3cfe0852adeba191757d12a11f90874b3828fe56f64229331f88": context canceled
github.com/OpenListTeam/OpenList/v4/internal/op.Put
	/home/runner/work/OpenList/OpenList/internal/op/fs.go:597
github.com/OpenListTeam/OpenList/v4/drivers/crypt.(*Crypt).Put
	/home/runner/work/OpenList/OpenList/drivers/crypt/driver.go:407
github.com/OpenListTeam/OpenList/v4/internal/op.Put
	/home/runner/work/OpenList/OpenList/internal/op/fs.go:571
github.com/OpenListTeam/OpenList/v4/internal/fs.putDirectly
	/home/runner/work/OpenList/OpenList/internal/fs/put.go:106
github.com/OpenListTeam/OpenList/v4/internal/fs.PutDirectly
	/home/runner/work/OpenList/OpenList/internal/fs/fs.go:112
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).handlePut
	/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:374
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).ServeHTTP
	/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:73
github.com/OpenListTeam/OpenList/v4/server.ServeWebDAV
	/home/runner/work/OpenList/OpenList/server/webdav.go:48
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDav.DownloadRateLimiter.func3
	/home/runner/work/OpenList/OpenList/server/middlewares/limit.go:51
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDav.UploadRateLimiter.func2
	/home/runner/work/OpenList/OpenList/server/middlewares/limit.go:28
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDAVAuth
	/home/runner/work/OpenList/OpenList/server/webdav.go:147
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server/middlewares.StoragesLoaded
	/home/runner/work/OpenList/OpenList/server/middlewares/check.go:35
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/recovery.go:102
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/logger.go:249
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:644
github.com/gin-gonic/gin.(*Engine).ServeHTTP
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:600
net/http.serverHandler.ServeHTTP
	/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:3340
net/http.(*conn).serve
	/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:2109
runtime.goexit
	/opt/hostedtoolcache/go/1.25.0/x64/src/runtime/asm_amd64.s:1693
github.com/OpenListTeam/OpenList/v4/internal/op.Put
	/home/runner/work/OpenList/OpenList/internal/op/fs.go:597
github.com/OpenListTeam/OpenList/v4/internal/fs.putDirectly
	/home/runner/work/OpenList/OpenList/internal/fs/put.go:106
github.com/OpenListTeam/OpenList/v4/internal/fs.PutDirectly
	/home/runner/work/OpenList/OpenList/internal/fs/fs.go:112
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).handlePut
	/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:374
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).ServeHTTP
	/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:73
github.com/OpenListTeam/OpenList/v4/server.ServeWebDAV
	/home/runner/work/OpenList/OpenList/server/webdav.go:48
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDav.DownloadRateLimiter.func3
	/home/runner/work/OpenList/OpenList/server/middlewares/limit.go:51
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDav.UploadRateLimiter.func2
	/home/runner/work/OpenList/OpenList/server/middlewares/limit.go:28
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDAVAuth
	/home/runner/work/OpenList/OpenList/server/webdav.go:147
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server/middlewares.StoragesLoaded
	/home/runner/work/OpenList/OpenList/server/middlewares/check.go:35
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/recovery.go:102
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/logger.go:249
github.com/gin-gonic/gin.(*Context).Next
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:644
github.com/gin-gonic/gin.(*Engine).ServeHTTP
	/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:600
net/http.serverHandler.ServeHTTP
	/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:3340
net/http.(*conn).serve
	/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:2109
runtime.goexit
	/opt/hostedtoolcache/go/1.25.0/x64/src/runtime/asm_amd64.s:1693 
配置文件内容(必填)
{
  "force": false,
  "site_url": "",
  "cdn": "",
  "jwt_secret": "vsZetrVajaQfso",
  "token_expires_in": 48,
  "database": {
    "type": "sqlite3",
    "host": "",
    "port": 0,
    "user": "",
    "password": "",
    "name": "",
    "db_file": "data/data.db",
    "table_prefix": "x_",
    "ssl_mode": "",
    "dsn": ""
  },
  "meilisearch": {
    "host": "http://localhost:7700",
    "api_key": "",
    "index": "openlist"
  },
  "scheme": {
    "address": "0.0.0.0",
    "http_port": 5244,
    "https_port": -1,
    "force_https": false,
    "cert_file": "",
    "key_file": "",
    "unix_file": "",
    "unix_file_perm": "",
    "enable_h2c": false,
    "enable_h3": false
  },
  "temp_dir": "data/temp",
  "bleve_dir": "data/bleve",
  "dist_dir": "",
  "log": {
    "enable": true,
    "name": "data/log/log.log",
    "max_size": 50,
    "max_backups": 30,
    "max_age": 28,
    "compress": false,
    "filter": {
      "enable": false,
      "filters": [
        {
          "cidr": "",
          "path": "/ping",
          "method": ""
        },
        {
          "cidr": "",
          "path": "",
          "method": "HEAD"
        },
        {
          "cidr": "",
          "path": "/dav/",
          "method": "PROPFIND"
        }
      ]
    }
  },
  "delayed_start": 0,
  "max_buffer_limitMB": -1,
  "mmap_thresholdMB": 4,
  "max_connections": 0,
  "max_concurrency": 64,
  "tls_insecure_skip_verify": true,
  "tasks": {
    "download": {
      "workers": 5,
      "max_retry": 1,
      "task_persistant": false
    },
    "transfer": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "upload": {
      "workers": 5,
      "max_retry": 0,
      "task_persistant": false
    },
    "copy": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "move": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "decompress": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "decompress_upload": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "allow_retry_canceled": false
  },
  "cors": {
    "allow_origins": [
      "*"
    ],
    "allow_methods": [
      "*"
    ],
    "allow_headers": [
      "*"
    ]
  },
  "s3": {
    "enable": true,
    "port": 5246,
    "ssl": false
  },
  "ftp": {
    "enable": false,
    "listen": ":5221",
    "find_pasv_port_attempts": 50,
    "active_transfer_port_non_20": false,
    "idle_timeout": 900,
    "connection_timeout": 30,
    "disable_active_mode": false,
    "default_transfer_binary": false,
    "enable_active_conn_ip_check": true,
    "enable_pasv_conn_ip_check": true
  },
  "sftp": {
    "enable": false,
    "listen": ":5222"
  },
  "last_launched_version": "v4.1.8",
  "proxy_address": ""
}

Image Image
复现链接(可选)

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the WebDAV PUT path at server/webdav/webdav.go:374, then trace the upload through internal/fs/put.go:106, internal/op/fs.go:571 and 597, and drivers/crypt/driver.go:407. Reproduce a 1 GB-plus upload to the China Mobile Cloud driver and compare it with the working storage drivers. Done means large WebDAV uploads complete without the context-canceled error.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, cloud
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.