devfactory/media

Laravel 包用于保存上传的文件并将它们与模型关联

4.0.6 2024-03-18 13:14 UTC

README

#Media

此包用于保存上传的文件并将它们与模型关联

安装

Laravel 5

注意:如果从 2.0.0 版本升级,请运行 php artisan vendor:publishphp 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');