文件上传与下载

ul-disk 提供三种文件操作方式:WebDAV 协议、S3 兼容 API、管理后台。

WebDAV

基本信息

  • URLhttp://<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

基本信息

  • URLhttp://<host>:8002/s3
  • 认证:AWS SigV4 签名(Access Key + Secret)
  • 协议:兼容 S3 REST API(非完整 AWS S3,13 个核心操作)

生成 Access Key

管理后台 → Access Key → 新建,获得:

  • access_key_id:形如 ULDSK-XXXXXXXX-XXXXXXXX
  • secret_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