文件上传与下载
ul-disk 提供三种文件操作方式:WebDAV 协议、S3 兼容 API、管理后台。
WebDAV
基本信息
- URL:
http://<host>:8002/dav - 认证:Basic Auth / Digest Auth / JWT Bearer
- 合规性:litmus 测试 basic 16/16、copymove 13/13、http 4/4 全 PASS
客户端配置
Windows 资源管理器(映射网络驱动器):
地址:http://your-server:8002/dav
用户名:admin
密码:admin123
macOS Finder(连接服务器):
⌘+K → http://your-server:8002/dav
rclone:
[uldisk]
type = webdav
url = http://localhost:8002/dav
vendor = other
user = admin
pass = admin123
rclone copy ./test.txt uldisk:/test.txt
rclone sync ./local-dir uldisk:/remote-dir
S3 兼容 API
基本信息
- URL:
http://<host>:8002/s3 - 认证:AWS SigV4 签名(Access Key + Secret)
- 协议:兼容 S3 REST API(非完整 AWS S3,13 个核心操作)
生成 Access Key
管理后台 → Access Key → 新建,获得:
access_key_id:形如ULDSK-XXXXXXXX-XXXXXXXXsecret_access_key:签名密钥
客户端配置
aws-cli:
aws configure set aws_access_key_id ULDSK-XXXX-XXXX
aws configure set aws_secret_access_key <secret>
aws configure set region us-east-1
# 创建 bucket
aws --endpoint-url http://localhost:8002/s3 s3 mb s3://mybucket
# 上传
aws --endpoint-url http://localhost:8002/s3 s3 cp test.txt s3://mybucket/
# 下载
aws --endpoint-url http://localhost:8002/s3 s3 cp s3://mybucket/test.txt ./
# 列表
aws --endpoint-url http://localhost:8002/s3 s3 ls s3://mybucket/
boto3 (Python):
import boto3
s3 = boto3.client('s3',
endpoint_url='http://localhost:8002/s3',
aws_access_key_id='ULDSK-XXXX-XXXX',
aws_secret_access_key='<secret>',
region_name='us-east-1'
)
s3.upload_file('local.txt', 'mybucket', 'remote.txt')
支持的 S3 操作
| 操作 | 方法 | 说明 |
|---|---|---|
| ListBuckets | GET / | 列出所有 bucket |
| CreateBucket | PUT /{bucket} | 创建 bucket(幂等) |
| DeleteBucket | DELETE /{bucket} | 删除空 bucket |
| HeadBucket | HEAD /{bucket} | 检查 bucket 存在 |
| ListObjectsV2 | GET /{bucket}?list-type=2 | 列出对象 |
| PutObject | PUT /{bucket}/{key} | 上传对象 |
| GetObject | GET /{bucket}/{key} | 下载对象(支持 Range) |
| HeadObject | HEAD /{bucket}/{key} | 获取元数据 |
| DeleteObject | DELETE /{bucket}/{key} | 删除对象(立即彻底删) |
| CopyObject | PUT /{bucket}/{key}?copy | 复制对象 |
| CreateMultipartUpload | POST /{bucket}/{key}?uploads | 初始化分片上传 |
| UploadPart | PUT /{bucket}/{key}?partNumber&uploadId | 上传分片 |
| CompleteMultipartUpload | POST /{bucket}/{key}?uploadId | 完成分片上传 |
| AbortMultipartUpload | DELETE /{bucket}/{key}?uploadId | 取消分片上传 |
S3 DELETE 走
deleteFileImmediate(立即彻底删),与 WebDAV 的回收站语义不同。
S3 与 WebDAV 互操作
同一文件可通过 S3 和 WebDAV 双入口访问(S3 bucket = WebDAV 根目录子集)。
管理后台
浏览器登录管理后台 → 文件浏览器:
- 目录树导航
- 拖拽上传 / 点击下载
- 在线重命名 / 删除(进回收站)
- 历史版本查看 / 下载
- X-Accel-Redirect 零拷贝下载(nginx 内部重定向,PHP 不读文件内容)
原文标题:文件上传与下载
原文文档:uldisk
原文地址:/read/augushong/ul-disk/zh-cn/1.0.0/6a3e73c598601/6a3e73d827519.html
原文平台:奥宏文档
1.0.0