Skip to content

Conversation

@hcrgm
Copy link
Contributor

@hcrgm hcrgm commented Nov 2, 2025

Description / 描述

改善百度网盘驱动的上传体验。主要改动:

  1. 动态获取上传域名,同时保留自定义上传域名的能力
  2. 延长上传超时时间
  3. 限制空文件上传(官方限制)
  4. 修复进度条不准确的bug

Motivation and Context / 背景

社区已经被百度网盘上传问题困扰许久(尤其是上传大文件时):

主要问题是分片上传超时。经过一段时间的摸索,问题的来源有2个:上传速度缓慢、超时时间过短。
前一个问题不一定是因为上传带宽低,也有可能是默认上传API负载较高,不能提供较高的上传速度。官方提供了“获取上传域名”接口,动态获取一般都能得到当前网络环境下上传速度最高的域名。
后一个问题,则是社区一直流传的“分片上传超时时间限制为30s”的“都市传说”。可能这个“都市传说”曾经是真的,但经实验发现,现在官方“放宽”了分片上传时间限制,实测可超30分钟。

Fixes #1172, #742, #704, #276

How Has This Been Tested? / 测试

使用curl限速10kb/s上传:

curl -F 'file=@./chunk_aa' "https://xafj-ct11.pcs.baidu.com/rest/2.0/pcs/superfile2?method=upload&access_token=<access_token>&type=tmpfile&path=%2Faaa%2Frandom_file.bin&uploadid=<uploadid>&partseq=0" --limit-rate 10k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0 32.0M    0     0    0 10240      0  10227  0:54:40  0:00:01  0:54:39 10240
  0 32.0M    0     0    0 20480      0  10231  0:54:39  0:00:02  0:54:37 10234
  0 32.0M    0     0    0 30720      0  10236  0:54:38  0:00:03  0:54:35 10240
  0 32.0M    0     0    0 40960      0  10233  0:54:39  0:00:04  0:54:35 10234
  0 32.0M    0     0    0 51200      0  10233  0:54:39  0:00:05  0:54:34 10235
  0 32.0M    0     0    0 61440      0  10235  0:54:38  0:00:06  0:54:32 10237
  0 32.0M    0     0    0 75776      0  10235  0:54:38  0:00:07  0:54:31 10238
........
 99 32.0M    0     0   99 31.8M      0  10235  0:54:38  0:54:26  0:00:12 10235
 99 32.0M    0     0   99 31.8M      0  10235  0:54:38  0:54:27  0:00:11 10237
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:28  0:00:10 10237
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:29  0:00:09 10233
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:30  0:00:08 10237
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:31  0:00:07 10237
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:32  0:00:06 10236
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:33  0:00:05 10236
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:34  0:00:04 10238
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:35  0:00:03 10236
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:36  0:00:02 10234
 99 32.0M    0     0   99 31.9M      0  10235  0:54:38  0:54:37  0:00:01 10237
 99 32.0M    0     0   99 32.0M      0  10235  0:54:38  0:54:38 --:--:-- 10233
100 32.0M    0    75  100 32.0M      0  10234  0:54:38  0:54:38 --:--:--  9117
{"md5":"d444a5139b007be47b03a8f80ef7ec4c","request_id":4977369998434736415}

用时54分钟上传单分片成功。
目前在本地通过百度网盘驱动上传了几十G、1000余份文件,在网络环境稳定的情况下(50Mbps的上行)实现0错误。

Checklist / 检查清单

This comment was marked as resolved.

jyxjjj and others added 2 commits November 3, 2025 09:58
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>
@jenfonro
Copy link
Contributor

jenfonro commented Nov 4, 2025

我合并了我之前创建的断点续传.需要调整一下代码

还有可能要测试下对于断点续传中的动态获取上传域名这块会不会有冲突

我更新并测试了一下,暂时没啥问题,合并后也能正常使用断点续传

虽然说断点续传的进度依然有点问题(我感觉问题不大)

@jyxjjj jyxjjj merged commit 9e852ba into OpenListTeam:main Nov 5, 2025
12 checks passed
handazao pushed a commit to handazao/OpenList that referenced this pull request Nov 7, 2025
* fix(baidu_netdisk): improve upload experience

* fix(typo): URL should be uppercase, apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>

* fix(typo): URL should be uppercase, apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: ShenLin <773933146@qq.com>

* fix(baidu_netdisk): use "UploadAPI" as a fallback when using dynamic upload api

* fix(baidu_netdisk): all uploads share the same upload url cache

* fix(drivers/baidu_netdisk): defer uploadUrlMu unlock

* update driver.go to main

---------

Signed-off-by: ShenLin <773933146@qq.com>
Signed-off-by: jenfonro <799170122@qq.com>
Co-authored-by: ShenLin <773933146@qq.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: jenfonro <799170122@qq.com>
@mo-han
Copy link

mo-han commented Nov 19, 2025

好吧,也许30s超时的限制已经不存在了。或者说即使存在,当上传速度足够高,也不会出问题。
但是,当上传速度很慢的时候,rclone就会一直报错405,并不停重试、但不管重试多少次都是相同报错。
于是就只好开启低带宽上传模式,该模式亲测有效,只要开启,哪怕慢慢上传很久(500KB/s、持续10分钟),也能顺利上传,rclone没有任何报错。
那么,为什么慢速上传就必须开启这个模式才行呢,按照上面的讲法,超时窗口已经非常大了,rclone不应该报错。而且就算报错,为什么会报405这种和超时无关的莫名其妙的错呢?

@362227
Copy link

362227 commented Dec 30, 2025

好吧,也许30s超时的限制已经不存在了。或者说即使存在,当上传速度足够高,也不会出问题。 但是,当上传速度很慢的时候,rclone就会一直报错405,并不停重试、但不管重试多少次都是相同报错。 于是就只好开启低带宽上传模式,该模式亲测有效,只要开启,哪怕慢慢上传很久(500KB/s、持续10分钟),也能顺利上传,rclone没有任何报错。 那么,为什么慢速上传就必须开启这个模式才行呢,按照上面的讲法,超时窗口已经非常大了,rclone不应该报错。而且就算报错,为什么会报405这种和超时无关的莫名其妙的错呢?

我开启低带宽上传模式,32线程,用rclone上传百度平均至少60M/s

@jyxjjj
Copy link
Member

jyxjjj commented Dec 30, 2025

其实应该是408或504

@mo-han
Copy link

mo-han commented Dec 30, 2025

@362227
高带宽环境本身就不会出这种情况。
正是因为网速慢,所以才会超时。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants