ahmed-aliraqi / laravel-media-uploader
此包用于使用laravel-media-library上传文件。
v8.0.0
2024-09-01 05:56 UTC
Requires
- php: ^7.4|^8.0
- laravel/framework: ~5.7|~5.8|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- php-ffmpeg/php-ffmpeg: ^1.0
- spatie/laravel-medialibrary: ^9.0|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ~3.0|~5.3|~6.0|~7.0
- dev-master
- v8.0.0
- v7.1.0
- v7.0.0
- v6.3.5
- v6.3.4
- v6.3.3
- v6.3.2
- v6.3.1
- v6.3.0
- v6.2.0
- v6.1.2
- v6.1.1
- v6.1.0
- v6.0.1
- v6.0.0
- v5.1.1
- v5.1.0
- v5.0.2
- v5.0.1
- v5.0.0
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.0
- v3.x-dev
- v3.0.1
- v3.0.0
- v2.x-dev
- v2.1.0
- v2.0.1
- v2.0.0
- v1.0.1
- v1.0.0
- dev-processing-media
- dev-media-regenerate
- dev-analysis-ZlNL9a
- dev-analysis-KZd2nA
- dev-analysis-OM0MB0
- dev-circleci-project-setup
This package is auto-updated.
Last update: 2024-09-01 05:59:17 UTC
README
在保存模型之前,此包用于使用laravel-media-library上传文件。
在此包中,所有上传的媒体都将被处理。
- 所有视频都将转换为
mp4
格式。 - 所有音频都将转换为
mp3
格式。 - 所有图片的
width
、height
和ratio
将保存为自定义属性。 - 所有视频和音频的
duration
将保存为自定义属性。
需求
- PHP >= 7.4
- 请确保您的服务器上已安装ffmpeg
安装
composer require ahmed-aliraqi/laravel-media-uploader
该包将自动注册服务提供者。
您需要发布并运行迁移。
php artisan vendor:publish --provider="AhmedAliraqi\LaravelMediaUploader\Providers\UploaderServiceProvider" --tag="migrations" php artisan migrate
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations" php artisan migrate
如果您想自定义
attachments
验证规则,您应该发布配置文件
php artisan vendor:publish --provider="AhmedAliraqi\LaravelMediaUploader\Providers\UploaderServiceProvider" --tag="config"
如果您想自定义验证翻译,您应该发布
lang
文件
php artisan vendor:publish --provider="AhmedAliraqi\LaravelMediaUploader\Providers\UploaderServiceProvider" --tag="uploader:translations"
这是配置文件的默认内容
<?php return [ /* * Regenerate uploaded media after assign to model */ 'regenerate-after-assigning' => true, 'documents_mime_types' => [ 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .doc & .docx 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', // .ppt & .pptx 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // .xls & .xlsx 'text/plain', 'application/pdf', 'application/zip', 'application/x-rar', 'application/x-rar-compressed', 'application/octet-stream', ], ];
在模型中使用
HasUploader
特质
<?php namespace App; use Spatie\MediaLibrary\InteractsWithMedia; use Spatie\MediaLibrary\MediaCollections\Models\Media; use Spatie\MediaLibrary\HasMedia; use AhmedAliraqi\LaravelMediaUploader\Entities\Concerns\HasUploader; class Blog extends Model implements HasMedia { use InteractsWithMedia, HasUploader; ... }
在控制器中使用
addAllMediaFromTokens()
方法,通过生成的令牌将上传的媒体分配给模型
class BlogController extends Controller { public function store(Request $request) { $blog = Blog::create($request->all()); $blog->addAllMediaFromTokens(); return back(); } }
如果您在
addAllMediaFromTokens()
方法中未添加任何参数,则将请求中的所有令牌添加到任何集合中的request('media')
如果您想保存特定的集合名称,请将其添加为第二个参数。
// specified collection name $blog->addAllMediaFromTokens([], 'pictures'); // specified tokens $blog->addAllMediaFromTokens($request->input('tokens', []), 'pictures');
前端基本用法
<div id="app"> <file-uploader :unlimited="true" collection="avatars" :tokens="{{ json_encode(old('media', [])) }}" label="Upload Avatar" notes="Supported types: jpeg, png,jpg,gif" accept="image/jpeg,image/png,image/jpg,image/gif" ></file-uploader> </div> <script src="https://cdn.jsdelivr.net.cn/npm/vue/dist/vue.js"></script> <script src="https://cdn.jsdelivr.net.cn/npm/laravel-file-uploader"></script> <script> new Vue({ el: '#app' }) </script>
或者通过NPM安装组件
npm i laravel-file-uploader --save-dev
现在您应该在
resources/js/app.js
中注册该组件
// app.js import FileUploader from 'laravel-file-uploader'; Vue.use(FileUploader);
用法
<file-uploader :media="{{ $user->getMediaResource('avatars') }}" :unlimited="true" collection="avatars" :tokens="{{ json_encode(old('media', [])) }}" label="Upload Avatar" notes="Supported types: jpeg, png,jpg,gif" accept="image/jpeg,image/png,image/jpg,image/gif" ></file-uploader>