阿里云盘大文件分片上传需四步:先获取2小时有效期的access_token,再调用create接口预上传(含sha1哈希与rsa签名proof_code),接着按4mb固定大小向各upload_url逐片put上传,最后用etag和part_number调complete接口合并。

阿里云盘官方客户端不开放分片上传接口,必须通过调用其 Web API 实现大文件的分片上传,整个过程需手动构造鉴权请求、预上传、分片上传、合并文件四步,缺一不可。
获取有效的 access_token
登录阿里云盘网页版(https://www.aliyundrive.com/drive),按 F12 打开开发者工具 → 切换到 Application 标签页 → 展开 Local Storage → 找到 https://www.aliyundrive.com 对应条目 → 复制 token 字段值(通常是长字符串,含点号分隔的三段 JWT 结构)。
注意:该 token 有效期约 2 小时,过期后所有后续请求会返回 401 错误,必须重新获取。
发起预上传请求(create
用 curl 或 Postman 发起 POST 请求到 https://api.aliyundrive.com/adrive/v3/file/create,Header 中添加 Authorization: Bearer 【刚复制的 access_token】,Body 为 JSON:
{"name":"bigfile.zip","parent_file_id":"root","type":"file","check_name_mode":"refuse","size":10737418240,"content_hash":"e6d9...a3f2","content_hash_name":"sha1","proof_code":"...","proof_version":"v1"}
其中 size 填文件总字节数;content_hash 是文件 SHA1 值(可用 certutil -hashfile bigfile.zip SHA1 在 Windows 获取);proof_code 需按阿里云盘文档要求生成(需用 RSA-SHA256 签名 + base64 编码,非简单哈希);若跳过 proof_code 直接传空字符串,服务器将返回 400 错误。
分片上传(upload_part)
预上传成功后响应中会返回 upload_id 和 part_info_list,后者是一个数组,每个元素含 part_number 和 upload_url。
对每个分片:用 PUT 方法向 upload_url 发送原始二进制分片数据(不能加任何 Header,不能 gzip,不能分块编码),例如第 1 片对应 part_number=1,上传内容为文件字节 0~4194303(4MB)。
阿里云盘要求分片大小固定为 4MB(4194304 字节),最后一片可小于该值;若某片大小不匹配 upload_url 所声明的 range 范围,服务器将直接拒绝并返回 400。
合并分片(complete
所有分片上传成功后,调用 POST https://api.aliyundrive.com/adrive/v3/file/complete,Header 同前,Body 为:
{"drive_id":"xxxx","file_id":"yyyy","upload_id":"zzzz","part_info_list":[{"part_number":1,"etag":"abc1"},{"part_number":2,"etag":"def2"}]}
其中 etag 是每个 upload_url 返回响应头中的 ETag 值(双引号内,不含引号),必须严格一致;【part_number 必须与预上传时分配的顺序完全相同,不可颠倒或跳号】。请求成功后,文件即出现在网盘根目录。











