devfactory / media
Laravel 包用于保存上传的文件并将它们与模型关联
4.0.6
2024-03-18 13:14 UTC
Requires
- php: >=7.2
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
README
#Media
此包用于保存上传的文件并将它们与模型关联
安装
Laravel 5
注意:如果从 2.0.0 版本升级,请运行
php artisan vendor:publish
和php artisan migrate
使用 Composer,编辑您的 composer.json
文件以要求 devfactory/media
。
"require": {
"devfactory/media": "2.0.*"
}
然后在终端运行
composer update
然后在您的 app/config/app.php
文件中注册服务提供者
'Devfactory\Media\MediaServiceProvider', 'That0n3guy\Transliteration\TransliterationServiceProvider',
在您项目的 laravel 文件夹中,运行
php artisan vendor:publish
接着运行
php artisan migrate
Laravel 4
使用 Composer,编辑您的 composer.json
文件以要求 devfactory/media
。
"require": {
"devfactory/media": "1.0.*"
}
然后在终端运行
composer update
然后在您的 app/config/app.php
文件中注册服务提供者
'Devfactory\Media\MediaServiceProvider', 'That0n3guy\Transliteration\TransliterationServiceProvider',
运行迁移以创建数据库表
php artisan migrate --package=devfactory/media
最后,发布配置以更改文件存储的位置和方式
php artisan config:publish devfactory/media
用法
要使用此包,您需要将以下内容添加到任何将接收媒体上传的模型中。
<?php class User extends Eloquent { use \Devfactory\Media\MediaTrait; );
然后,在处理表单提交的方法中,只需将文件对象传递给 saveMedia()
public function upload() { $user = User::firstOrCreate(['id' => 1]); if (Input::hasFile('image')) { $user->saveMedia(Input::file('image')); } return Redirect::route('route'); }
这将创建文件系统上的文件并在媒体数据库表中插入一个条目。
如果您需要在模型上设置多种不同类型的图像,例如用户的个人资料图片和页面背景,可以使用第二个参数
$user->saveMedia(Input::file('profile_picture'), 'profile_picture'); $user->saveMedia(Input::file('background_image'), 'background_image');
要再次检索图像,只需调用 getMedia()
// Retrieves every Media linked with the user $all_media = $user->getMedia(); // Retrieve a specific Media $profile_picture = $user->getMedia('profile_picture');
最后,您可以使用 deleteMedia()
删除媒体
// Delete all media for a user $user->deleteMedia(); // Delete specific media $user->deleteMedia('profile_picture');