PICFLOW 存储配置

PICFLOW 支持三种存储后端,通过统一的抽象层实现无缝切换。

存储抽象层

存储抽象层 (storage.php)

三个核心函数:

// 上传文件
storage_upload(string $tmpPath, string $ext, int $userId): array

// 获取访问 URL
storage_get_url(string $path, string $driver): string

// 删除文件
storage_delete(string $path, string $driver): bool

用户存储偏好

每个用户可独立设置存储后端:

  • 优先级:用户配置 > 站点默认配置
  • 配置文件通过 get_user_storage_driver($userId) 获取
  • 管理员可在 /admin/storage.php 配置默认和全局设置

本地存储

配置

无需额外配置,默认使用本地文件系统。

文件存放

uploads/
└── {timestamp}_{16-hex-chars}.{ext}

例如:uploads/1705314000_a1b2c3d4e5f6g7h8.jpg

URL 格式

https://your-domain.com/uploads/1705314000_a1b2c3d4e5f6g7h8.jpg

注意事项

  • 确保 uploads/ 目录有写权限
  • 禁止 uploads/ 目录执行 PHP
  • 建议配置 CDN 加速静态资源

阿里云 OSS

配置参数

参数 说明
AccessKeyId 阿里云 AccessKey
AccessKeySecret 阿里云 AccessKey Secret
Bucket OSS Bucket 名称
Endpoint OSS Endpoint(如 oss-cn-hangzhou.aliyuncs.com
CustomDomain 自定义域名(可选,用于 URL 生成)

签名方式

使用 HMAC-SHA1 签名 REST API 请求。

URL 格式

# 默认域名
https://{bucket}.{endpoint}/{path}

# 自定义域名
https://{custom_domain}/{path}

腾讯云 COS

配置参数

参数 说明
SecretId 腾讯云 SecretId
SecretKey 腾讯云 SecretKey
Bucket COS Bucket 名称
Region 地域(如 ap-guangzhou
CustomDomain 自定义域名(可选)

签名方式

使用 q-sign-algorithm=sha1 的 HMAC-SHA1 签名算法。

URL 格式

# 默认域名
https://{bucket}.cos.{region}.myqcloud.com/{path}

# 自定义域名
https://{custom_domain}/{path}

对比

特性 本地 阿里云 OSS 腾讯云 COS
成本 服务器磁盘成本 按量付费 按量付费
速度 取决于服务器带宽 CDN 加速 CDN 加速
可靠性 取决于备份策略 99.9999999999% 99.9999999999%
配置复杂度 中等 中等
适用场景 小规模/个人 生产环境 生产环境

迁移

在存储后端之间迁移数据:

  1. 从旧后端下载所有文件
  2. 上传到新后端
  3. 更新 images 表中对应图片的 storage_driverfile_path
  4. 更新站点默认存储配置
📝 本文由AI生成