Skip to content

储存管理

储存是兰空图床中重要的组成部分之一,目前支持 本地AWS S3阿里云 OSS腾讯云 COS七牛云 Kodo又拍云 USSSftpFtpWebdav

需要 Minio 或 Backblaze b2 支持?

任何使用标准的S3 API接口协议的储存,都可以使用 AWS S3 来实现上传,包括 Minio 和 Backblaze b2。

储存是如何运作的

系统中可以创建多个储存,每一个储存可以选择一个驱动,即本地、S3、阿里云 OSS 等,选择不同的驱动类型则需要填写不同的配置信息。

储存可以设置图片文件储存的具体位置,甚至可以设置为系统目录,例如 /root/photos,但是需要注意,设置为系统目录可能存在权限相关问题。

正确的使用姿势应该是服务器挂载了一块大储存磁盘 /mnt/mydisk,然后设置为 /mnt/mydisk/photos

创建或编辑储存时,程序会判断设置的路径是否存在,不存在则自动创建,并在 public 目录生成一个指向储存目录的符号链接,从而实现文件储存在服务器的任何位置还能保证公网可以访问到图片。

访问前缀是什么

为了实现文件储存在服务器任何位置还能保证公网可访问这个需求,我们就必须使用符号链接,您可以通俗的将符号链接理解为 Windows 系统中的快捷方式。

假设我们的访问域名是 http://localhost,站点根目录为 /www/wwwroot/app.com/public

按照惯例,如果我们在站点根目录上传一张图片 test.png,理论上我们的访问路径应该为 http://localhost/test.png ,而这种路径拼接的方式,文件被限制在了只能放在站点根目录,我们只能访问到站点根目录中的文件,即 /www/wwwroot/app.com/public/test.png

而如果我们在站点根目录创建了一个符号链接 uploads,并且这个符号链接指向的实际储存位置为 /www/wwwroot/data,现在我们通过访问 http://localhost/uploads/test.png 时,这时候的实际文件路径为 /www/wwwroot/data/test.png

访问前缀不仅起到了上述作用,程序还利用访问前缀来实现云处理功能(利用前缀获取指定的储存配置)。

所以,为了实现这个特性,程序中所有属于本地类型或开启了云处理的储存,都需要添加上这个访问前缀,导致 url 变的不好看。不过这是值得的。

处理器是什么

每个储存都可以分别设置一个图片安全驱动、图片处理驱动、云处理驱动。我们可以关联已创建的驱动,利用指定的驱动对储存的内容进行控制与处理。

  • 关联指定的图片安全驱动,任何上传到该储存的图片,都将会按照已选择的图片安全驱动进行审核。
  • 关联指定的图片处理驱动,任何上传到该储存的图片,都将会按照已选择的图片处理驱动进行处理(裁切、水印、滤镜等)。
  • 关联指定的云处理驱动,我们就可以通过 url 参数对该图片进行动态处理。

支持的文件命名规则

名称示例值解释
{Y}2024当前年份
{y}24当前年份简写
{m}01当前月份
{d}04当前
{Ymd}20240104年月日
{filename}吴彦祖的自拍照文件名称(不带拓展名)
{ext}png文件拓展名
{time}1718956160时间戳
{uniqid}667530e55196f唯一ID
{md5}e10adc3949ba59abbe56e057f20f883e文件 md5 值
{sha1}7c4a8d09ca3762af61e59520943dc26494f8941b文件 sha1 值
{uuid}ca083d36-1f0a-4d2a-83f7-f3e97f4f4bfaUUID
{uid}1用户ID