ar7/media

在您的laravel项目中探索、上传、删除和创建新文件夹

1.0.3 2023-06-17 18:40 UTC

This package is auto-updated.

Last update: 2024-09-17 21:28:54 UTC


README

Media - Explore, Upload, Delete and Create new folder

媒体 - 探索、上传、删除和创建新文件夹

您可以使用此包上传您的媒体并将媒体附加到您的模型上。

安装

  1. composer require ar7/media.
  2. Ar7\Media\MediaServiceProvider::class添加到config/app.php文件中的providers数组中。
  3. 'Ar7Media' => Ar7\Media\Facades\Ar7Media::class添加到config/app.php文件中的aliases数组中。
  4. "Ar7\\Media\\": "vendor/ar7/media/src/"添加到composer.json文件中的autoload => psr-4对象中,然后运行此命令:composer dump-autoload
  5. 如果您尚未链接存储,请运行此命令php artisan storage:link
  6. 运行php artisan vendor:publish --tag=ar7-media-config以将配置文件复制到config文件夹。
  7. 运行php artisan vendor:publish --tag=ar7-media-public以将资产文件复制到public文件夹,建议使用--force标志。
  8. 运行php artisan vendor:publish --tag=ar7-media-migrations以将迁移复制到database/migrations文件夹。
  9. 运行php artisan migrate以创建表。

API

您可以在模型上使用这些方法

有一个用于单个媒体的getSubSize方法,您可以使用以下代码获取特定子尺寸(您在配置文件中定义的)的图像

$medium->getSubSize('thumbnail');

用法

首先,查看config文件夹中的ar7_media.php文件。

Ar7Media添加到您的模型中

use Ar7\Media\Ar7Media;

class Product extends Model
{
    ...
    use Ar7Media;
    ...
}

在您的视图中,您必须加载css和js文件并加载媒体选择器

示例

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Ar7 Media</title>
	<!-- load the css file -->
	@ar7_media('css')
</head>
<body>
<form method="post">
	@csrf
	<!-- load the media selector -->
	@ar7_media_start
	@ar7_media_file('img', '{"name": "image", "placeholder": "Image", "file": ""}')
	@ar7_media_end
	<!-- load the media selector -->
	<br>
	<button type="submit">Submit</button>
</form>

<!-- load the js files -->
@ar7_media('js')
</body>
</html>

@ar7_media_file指令有两个参数

  1. ID - 用于媒体选择器
  2. OPTIONS - 包含以下键的JSON对象
{
  "name": "(String)",
  // the key which you can get in $request object when the form submitted
  "placeholder": "(String)",
  // placeholder for the media selector
  "file": "(String)",
  // Current media path to show in media selector
  "id": "(Number)"
  // Current media id
}

从控制器上传

要从控制器上传文件,只需使用Ar7Media外观。

use Ar7\Media\Facades\Ar7Media;

class HomeController
{
    function index()
    {
        $file = $request->file('file');
        Ar7Media::upload($file, 'path'); // path is optional
    }
}

用JS加载

如果您想用javascript加载选择器,请使用以下指令

在媒体选择器blade指令内或外添加此内容。

@ar7_media_start
<div id="mp3"></div>
@ar7_media_end

<!-- OR -->

<div id="mp3"></div>

然后使用此代码加载选择器

Ar7Media.loadMediaSelectorWithJS('mp3', {name: 'mp3', placeholder: 'MP3', accept: '.mp3'});

loadMediaSelectorWithJS方法的参数与@ar7_media_file指令完全相同。它只有一个第三个参数,获取truefalse。如果您想在媒体选择器blade指令外添加该div元素,则应传递false

集成

CKEditor

在您的视图中添加一个textarea

<textarea name="editor1"></textarea>

使用媒体作为CKEditor文件浏览器

CKEDITOR.replace('editor1', {
	filebrowserBrowseUrl: mediaRoute('ar7.media.index'),
	filebrowserImageBrowseUrl: mediaRoute('ar7.media.index') + '?accept={{ config("ar7_media.mime_types.image/*") }}',
});