luongnd / laravel-medialibrary-mongodb
将文件与 Eloquent 模型关联
Requires
- php: ^7.0
- illuminate/bus: ~5.1.16|~5.2.0
- illuminate/console: ~5.1.16|~5.2.0
- illuminate/database: ~5.1.16|~5.2.0
- illuminate/support: ~5.1.16|~5.2.0
- jenssegers/mongodb: ^3.0.0
- spatie/laravel-glide: ^3.0.0
- spatie/pdf-to-image: ^1.0.1
- spatie/string: ^2.0.0
Requires (Dev)
- doctrine/dbal: ^2.5.2
- mockery/mockery: ^0.9.4
- orchestra/testbench: ^3.0
- phpunit/phpunit: ^5.0.0
- scrutinizer/ocular: ^1.1
- dev-master
- 4.5.0.1
- 4.0.0.1
- 4.0.0
- 3.17.4
- 3.17.3
- 3.17.2
- 3.17.1
- 3.17.0
- 3.16.1
- 3.16.0
- 3.15.0
- 3.14.1
- 3.14.0
- 3.13.4
- 3.13.3
- 3.12.2
- 3.12.1
- 3.12.0
- 3.11.3
- 3.11.2
- 3.11.1
- 3.11.0
- 3.10.2
- 3.10.1
- 3.10.0
- 3.9.2
- 3.9.1
- 3.9.0
- 3.8.0
- 3.7.3
- 3.7.2
- 3.7.1
- 3.7.0
- 3.6.0
- 3.5.1
- 3.5.0
- 3.4.0
- 3.3.1
- 3.3.0
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.5
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- v2.x-dev
- 2.3.0
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.1
- 2.0.0
- v1.x-dev
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- 0.1.0
This package is not auto-updated.
Last update: 2024-09-23 13:21:29 UTC
README
这个 Laravel >=5.1 和 Lumen 兼容的包可以将各种文件与 Eloquent 模型关联起来。它提供了一个简单的 API 来使用。以下是一个示例
$newsItem = News::find(1); $newsItem->addMedia($pathToFile)->toCollection('images');
它可以直接处理你的上传
$newsItem->addMedia($request->file('image'))->toCollection('images');
想要将一些大文件存储在另一个文件系统中?没问题
$newsItem->addMedia($smallFile)->toCollectionOnDisk('downloads', 'local'); $newsItem->addMedia($bigFile)->toCollectionOnDisk('downloads', 's3');
文件的存储由 Laravel 的文件系统 处理,所以你可以使用你喜欢的任何文件系统。此外,该包可以对已添加到媒体库中的图像和 PDF 进行图像处理。
Spatie 是一家位于比利时的安特卫普的网页设计公司。你可以在我们的网站上找到我们所有开源项目的概述 在这里。
文档
你可以在 https://docs.spatie.be/laravel-medialibrary/v4 上找到文档。
在使用这个包时遇到困难?发现了一个错误?你有关于改进媒体库的一般性问题或建议吗?请随意在 GitHub 上创建问题,我们将尽快解决。
如果你发现了一个关于安全的错误,请通过 freek@spatie.be 发送邮件,而不是使用问题跟踪器。
要求
为了创建派生图像,你的服务器上应该安装了 GD。对于创建 svg 或 pdf 的缩略图,你还应该安装 Imagick。
安装
你可以使用以下命令通过 composer 安装此包
composer require spatie/laravel-medialibrary
接下来,你必须安装服务提供者
// config/app.php 'providers' => [ ... Spatie\MediaLibrary\MediaLibraryServiceProvider::class, ];
你可以使用以下命令发布迁移
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"
在迁移发布后,你可以通过运行迁移来创建 media-table
php artisan migrate
你可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="config"
这是发布配置文件的内容
return [ /* * The filesystems on which to store added files and derived images by default. Choose * one or more of the filesystems you configured in app/config/filesystems.php */ 'defaultFilesystem' => 'media', /* * The maximum file size of an item in bytes. Adding a file * that is larger will result in an exception. */ 'max_file_size' => 1024 * 1024 * 10, /* * This queue will used to generate derived images. * Leave empty to use the default queue. */ 'queue_name' => '', /* * The class name of the media model to be used. */ 'media_model' => Spatie\MediaLibrary\Media::class, /* * When urls to files get generated this class will be called. Leave empty * if your files are stored locally above the site root or on s3. */ 'custom_url_generator_class' => null, /* * The class that contains the strategy for determining a media file's path. */ 'custom_path_generator_class' => null, 's3' => [ /* * The domain that should be prepended when generating urls. */ 'domain' => 'https://xxxxxxx.s3.amazonaws.com', ], 'remote' => [ /** * Any extra headers that should be included when uploading media to * a remote disk. Even though supported headers may vary between * different drivers, a sensible default has been provided. * * Supported by S3: CacheControl, Expires, StorageClass, * ServerSideEncryption, Metadata, ACL, ContentEncoding */ 'extra_headers' => [ 'CacheControl' => 'max-age=604800', ] ] ];
最后,你应该在 app/config/filesystems.php
中添加一个磁盘。这是一个典型的配置
... 'disks' => [ 'media' => [ 'driver' => 'local', 'root' => public_path().'/media', ], ...
媒体库的所有文件都将存储在这个磁盘上。如果你计划使用图像处理,你应该在你的服务中配置一个队列,其名称与配置文件中指定的名称相同。
Lumen 支持
Lumen 配置稍微复杂一些,但功能和 API 与 Laravel 相同。
使用此命令安装
composer require spatie/laravel-medialibrary
在引导文件中取消以下行的注释
// bootstrap/app.php: $app->withFacades(); $app->withEloquent();
配置 laravel-medialibrary 服务提供者(如果尚未启用,则包括 AppServiceProvider
)
// bootstrap/app.php: $app->register(App\Providers\AppServiceProvider::class); $app->register(Spatie\MediaLibrary\MediaLibraryServiceProvider::class);
更新 AppServiceProvider
的 register 方法以将文件系统管理器绑定到 IOC 容器
// app/Providers/AppServiceProvider.php public function register() { $this->app->singleton('filesystem', function ($app) { return $app->loadComponent('filesystems', 'Illuminate\Filesystem\FilesystemServiceProvider', 'filesystem'); }); $this->app->bind('Illuminate\Contracts\Filesystem\Factory', function($app) { return new \Illuminate\Filesystem\FilesystemManager($app); }); }
手动将包配置文件复制到 app/config/laravel-medialibrary.php
(如果尚未存在,可能需要创建配置目录)。
将 Laravel 文件系统配置文件 复制到 app/config/filesystem.php
。你应该在文件系统配置中添加一个磁盘配置,以匹配 laravel-medialibrary 配置文件中指定的 defaultFilesystem
。
最后,更新 boostrap/app.php
以加载两个配置文件
// bootstrap/app.php $app->configure('laravel-medialibrary'); $app->configure('filesystems');
测试
您可以使用以下命令运行测试:
vendor/bin/phpunit
## 升级
有关详细信息,请参阅 UPGRADING。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全
如果您发现任何安全相关的问题,请发送电子邮件至 freek@spatie.be,而不是使用问题跟踪器。
鸣谢
替代方案
关于Spatie
Spatie 是一家位于比利时的安特卫普的网页设计公司。你可以在我们的网站上找到我们所有开源项目的概述 在这里。
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。