文件存储引擎

系统已全面支持多种存储方案,包括但不限于本地存储、云存储等,以满足不同场景下的数据存储需求。用户可以通过后台的系统管理界面,轻松修改配置参数,实现存储方案的灵活切换和配置调整。 这一优化不仅简化了存储配置的复杂性,还提高了系统的灵活性和可扩展性。用户无需深入了解底层存储机制,即可根据实际需求选择合适的存储方案,并进行相应的参数配置。

同时,后台管理界面提供了友好的操作界面和详细的参数说明,帮助用户快速上手,降低操作难度。用户只需按照提示进行修改,即可完成存储方案的配置,无需复杂的编程或配置操作。

存储方式不占服务器空间上传大文件支持CDN加速是否推荐
本地服务器存储❌️
自建 Alist 存储✔️可配✔️
七牛云空间存储✔️✔️✔️✔️
又拍云USS存储✔️✔️✔️✔️
阿里云OSS存储✔️✔️✔️✔️
腾讯云COS存储✔️✔️✔️✔️

这里推荐使用 七牛云存储,主要是配置简单性价比高,首次注册认证赠送 10GB 的免费存储空间。 立即注册

  • ThinkAdmin 文件存储默认使用文件 hash 命名,同一个文件只会存储一份;
  • 支持文件秒传,当文件已经上传到服务之后,再次上传同一个文件时将立即成功;
  • 新版本的 ThinkAdmin 支持以日期+随机的方式命名,注意此方法不支持秒传功能;
  • 所有文件上传之后,将统一返回 url 可访问的链接地址,直接存储到内容即可访问;
  • 更多文件规则可以在系统后台文件管理处配置参数,不同的存储方式配置不同的参数;

config-language.png

后台配置演示

自动存储引擎

对于文件操作有统一的操作接口,默认自动选择配置的引擎:

关于参数 safe 为存储文件到安全目录 ( 只支持 Local 文件上传 ),不允许直接使用 url 访问,主要用于上传一些私密文件。

use think\admin\Storage;

$content = '文件内容 ( 原文件内容,文档或二进制文件 )';
$filename = '文件名称 ( 支持路径,相对 upload 目录 或 云存储根目录 ) ';

$result = Storage::instance()->upload(); // 上传入口
$result = Storage::instance()->region(); // 存储区域
$result = Storage::instance()->set($filename, $content, $safe); // 上传文件
$result = Storage::instance()->get($filename, $safe); // 读取文件
$result = Storage::instance()->del($filename, $safe); // 删除文件
$result = Storage::instance()->has($filename, $safe); // 判断是否存在
$result = Storage::instance()->url($filename, $safe); // 生成文件链接
$result = Storage::instance()->info($filename, $safe); // 获取文件参数
$result = Storage::instance()->path($filename, $safe); // 计算文件路径

指定存储引擎

// 本地服务器文件操作
use think\admin\storage\LocalStorage;

$content = '文件内容 ( 原文件内容,文档或二进制文件 )';
$filename = '文件名称 ( 支持路径,相对 upload 目录 或 云存储根目录 ) ';

$result = LocalStorage::instance()->upload(); // 上传入口
$result = LocalStorage::instance()->set($filename, $content, $safe); // 上传文件
$result = LocalStorage::instance()->get($filename, $safe); // 读取文件
$result = LocalStorage::instance()->del($filename, $safe); // 删除文件
$result = LocalStorage::instance()->has($filename, $safe); // 判断是否存在
$result = LocalStorage::instance()->url($filename, $safe); // 生成文件链接
$result = LocalStorage::instance()->info($filename, $safe); // 获取文件参数
// 自建 Alist 存储
// 该方式是自行搭建的存储,灵活私有,可使用内网存储
use think\admin\storage\AlistStorage;

$content = '文件内容 ( 原文件内容,文档或二进制文件 )';
$filename = '文件名称 ( 支持路径,相对 upload 目录 或 云存储根目录 ) ';

$result = AlistStorage::instance()->upload(); // 上传入口
$result = AlistStorage::instance()->region(); // 存储区域
$result = AlistStorage::instance()->set($filename, $content); // 上传文件
$result = AlistStorage::instance()->get($filename); // 读取文件
$result = AlistStorage::instance()->del($filename); // 删除文件
$result = AlistStorage::instance()->has($filename); // 判断是否存在
$result = AlistStorage::instance()->url($filename); // 生成文件链接
$result = AlistStorage::instance()->info($filename); // 获取文件参数
// 阿里云 OSS 存储
use think\admin\storage\AliossStorage;

$content = '文件内容 ( 原文件内容,文档或二进制文件 )';
$filename = '文件名称 ( 支持路径,相对 upload 目录 或 云存储根目录 ) ';

$location = '文件远程链接,如:https://v6.thinkadmin.top/favicon.ico';

$result = AliossStorage::instance()->upload(); // 上传入口
$result = AliossStorage::instance()->region(); // 存储区域
$result = AliossStorage::instance()->set($filename, $content); // 上传文件
$result = AliossStorage::instance()->get($filename); // 读取文件
$result = AliossStorage::instance()->del($filename); // 删除文件
$result = AliossStorage::instance()->has($filename); // 判断是否存在
$result = AliossStorage::instance()->url($filename); // 生成文件链接
$result = AliossStorage::instance()->info($filename); // 获取文件参数
// 腾讯云 COS 存储
use think\admin\storage\TxcosStorage;

$content = '文件内容 ( 原文件内容,文档或二进制文件 )';
$filename = '文件名称 ( 支持路径,相对 upload 目录 或 云存储根目录 ) ';

$result = TxcosStorage::instance()->upload(); // 上传入口
$result = TxcosStorage::instance()->region(); // 存储区域
$result = TxcosStorage::instance()->set($filename, $content); // 上传文件
$result = TxcosStorage::instance()->get($filename); // 读取文件
$result = TxcosStorage::instance()->del($filename); // 删除文件
$result = TxcosStorage::instance()->has($filename); // 判断是否存在
$result = TxcosStorage::instance()->url($filename); // 生成文件链接
$result = TxcosStorage::instance()->info($filename); // 获取文件参数
// 七牛云存储
use think\admin\storage\QiniuStorage;

$content = '文件内容 ( 原文件内容,文档或二进制文件 )';
$filename = '文件名称 ( 支持路径,相对 upload 目录 或 云存储根目录 ) ';

$result = QiniuStorage::instance()->upload(); // 上传入口
$result = QiniuStorage::instance()->region(); // 存储区域
$result = QiniuStorage::instance()->set($filename, $content); // 上传文件
$result = QiniuStorage::instance()->get($filename); // 读取文件
$result = QiniuStorage::instance()->del($filename); // 删除文件
$result = QiniuStorage::instance()->has($filename); // 判断是否存在
$result = QiniuStorage::instance()->url($filename); // 生成文件链接
$result = QiniuStorage::instance()->info($filename); // 获取文件参数

后续会跟据使用情况,不定时增加其他存储支持,具体调用参数一致,可根据对应存储驱动调用即可。

Last Updated:
Contributors: 邹景立