jbernavaprah/eloquent-fs

A laravel/lumen FileSystem,使用 Eloquent 作为数据存储,灵感来源于 GridFS (MongoDB)

1.1.2 2021-05-19 14:05 UTC

This package is auto-updated.

Last update: 2024-09-24 20:23:05 UTC


README

A laravel/lumen filesystem wrapper that use eloquent as datastore, inspired by GridFS (MongoDB)

注意:尚未准备好用于生产环境!

注意2:仍在开发中!

安装

composer install jbernavaprah/eloquent-fs

然后使用以下命令在数据库中创建所需的表:

php artisan migrate

这将使用标准的laravel迁移,因此也将使用您项目上设置默认连接。

基本用法

要使用此包装器,您需要将路径前缀为 efs://。路径将被用作数据库中文件的 id

touch('efs://file.txt'); // file.txt will be ID of this file.
file_put_contents('efs://file.txt', "foobar\n");
echo file_get_contents('efs://file.txt'); // "foobar\n"
copy('efs://file.txt', 'efs://other_file.txt');
echo file_get_contents('efs://other_file.txt'); // "foobar\n"
unlink('efs://file.txt');
unlink('efs://other_file.txt');

使用 Eloquent 模型

您还可以直接使用 EloquentFS 中的 Eloquent 模型。

use JBernavaPrah\EloquentFS\Models\FsFile;

$file = new FsFile();
$file->id = 'file.txt'; // if not provided, will generated as uuid 

$file->write("foobar", $append=true); // 6

$file->read($offset =3, $length = 3); // "bar"
$file->read($offset =0, $length = 6); // "foobar"

$file->write("foobar", $append=true); // 6
$file->read(); // foobarfoobar

$file->delete(); // Delete

深度配置

不同的连接

如果您想更改连接,请在您的 AppServiceProvider::register() 方法中添加

\JBernavaPrah\EloquentFS\EloquentFS::$connection = 'different_connection';

禁用迁移

如果您想禁用迁移,请在您的 AppServiceProvider::register() 方法中添加

\JBernavaPrah\EloquentFS\EloquentFS::$runMigrations = False;

现在您将负责创建和运行所需的迁移。您可以在 ./database/migrations 路径下查看这些迁移。

如何帮助

提交一个 PR,运行所有测试,我很乐意合并它!

缺少实现

  1. 使用 flock() 锁定文件。
  2. 需要性能评估。与 MongoDB 的比较将非常棒!
  3. 在生产环境中使用 :D
  4. 需要测试审查。
  5. 需要实现 ftruncate()