cyrodjohn/l5-media-manager

此软件包最新版本(1.0.1)没有可用的许可证信息。

创建一个惊人的用户界面,用于上传和管理工作媒体文件。这是 https://github.com/JoanVt/L5-media-manager 的分支。

安装: 17

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 1

语言:JavaScript

1.0.1 2015-10-05 10:52 UTC

This package is not auto-updated.

Last update: 2024-09-18 22:21:59 UTC


README

##Laravel 5.1 和 Bootstrap 3 的简单优雅媒体管理器。

演示

添加

列表

信息

在 composer.json 中编辑您所需的依赖项: "joanvt/l5-media-manager": "dev-master"

####第1步 - 使用 CMD Composer 执行: composer update

####第2步 - 然后,使用 CMD PHP 执行: php artisan vendor:publish

####第3步 - 现在,只需在您的 config/app.php 中添加提供者类

Joanvt\MediaManager\MediaManagerServiceProvider::class

####第4步 - 迁移数据库。使用 CMD PHP 执行: php artisan migrate

####第5步 - 创建您的媒体模型(如果您想定义它,可以在 config/app.php 中使用别名)

namespace app\Models;

use Illuminate\Database\Eloquent\Model;
class MyMediaClass extends Model {

    protected $table = 'media';
    protected $fillable = ['name','path','description','ext','gallery_id','status'];
    protected $guarded = ['id'];
}

####第6步 - 使用我们的三个方法创建视图,并在 "lists" 方法中包含您的查询

	{!! Joanvt\MediaManager\MediaManager::styles() !!}
	
	{!!  Joanvt\MediaManager\MediaManager::lists(Media::where('status','A')->orderBy('id','DESC'))  !!}
   
   	{!! Joanvt\MediaManager\MediaManager::scripts() !!}

####第7步 - 创建请求验证器(app/Http/Requests)

<?php

namespace app\Http\Requests;

use app\Http\Requests\Request;

class MediaFilesRequest extends Request {

    public function authorize() {
        return true;
    }

    public function rules() {
    	
    	return [
			'upl'	=> 'required|image|mimes:jpeg,bmp,png,gif|max:2000', // 2 Megas
	
		];
    }

    public function messages() {
        return [
        	'upl.required'				=>	'You have to upload some file',
      		'upl.max'				      =>	'2MB max size',
      		'upl.mimes'					  =>	'Not a valid file'
        ];
    }
	
    
}

####第9步 - 创建您的 Ajax 控制器,如下所示,并包含您的文件请求器

<?php

namespace app\Http\Controllers;

use Illuminate\Routing\UrlGenerator;
use Redirect;
use Auth;
use app\Http\Requests\MediaFilesRequest;
use app\Http\Requests\MediaFilesDeleteRequest;
use Config;
use File;
use Media;
use Image;

class AjaxController extends Controller {

    protected $url;

    // ------------------------------------------------------------------
    public function __construct(UrlGenerator $url) {

        $this->url = $url;
		$this->middleware('isAjax');
		$this->middleware('isAdmin');
    }

    public function index(MediaFilesRequest $request){

		$file = $request->file('upl');
		
		if(!$file->isValid()){
			return abort(405);
		}
		
		if(!file_exists(public_path(Config::get('jmedia.upload_path')))){
			File::makeDirectory(public_path(Config::get('jmedia.upload_path')), 0777,true);
		}
		
		if(!file_exists(public_path(Config::get('jmedia.upload_path').'/'.Config::get('jmedia.thumbnail_directory')))){
			File::makeDirectory(public_path(Config::get('jmedia.upload_path').'/'.Config::get('jmedia.thumbnail_directory')), 0777,true);
		}
		
		$name = md5(uniqid()).$file->getClientOriginalName();
		$request->file('upl')->move(public_path(Config::get('jmedia.upload_path')), $name.'.'.$file->getClientOriginalExtension());
		
		$create = Media::create([
			'name' 			=> $name,
			'path' 			=> Config::get('jmedia.upload_path'),
			'description'	=> '',
			'ext'			=> $file->getClientOriginalExtension(),
			'status'		=> 'A'
		]);
		
		$width  = Config::get('jmedia.width_thumbnail');
		$height = Config::get('jmedia.height_thumbnail');
		
		$image = Image::make(Config::get('jmedia.upload_path').'/'.$name.'.'.$file->getClientOriginalExtension());
		$path = public_path(Config::get('jmedia.upload_path').'/'.Config::get('jmedia.thumbnail_directory'));
		
		$image->resize($width,$height);
		$image->save($path.'/'.$name.$width.'x'.$height.'.'.$file->getClientOriginalExtension());
		
		
		return $create->toJson();
		
    }
	
	
	public function delete_image(MediaFilesDeleteRequest $request){
		
		$error = [];
		$request->get('ref');
			
		$file  =Media::find($request->get('ref'));
		$width  = Config::get('jmedia.width_thumbnail');
		$height = Config::get('jmedia.height_thumbnail');
		
		$file_deleted = File::delete(public_path(Config::get('jmedia.upload_path').'/'.$file->name.'.'.$file->ext));
		
		if($file_deleted){
			// Once deleted the file, then we must delete the thumbnail
			
			$thumb_delete = File::delete(public_path(Config::get('jmedia.upload_path').'/'.Config::get('jmedia.thumbnail_directory').'/'.$file->name.$width.'x'.$height.'.'.$file->ext));
			if(!$thumb_delete){
				$error['thumb'] = 'Thumbnail couldn\'t be deleted, delete it manually or check permissions.';
			}
			
		}else{
			$error['file'] = 'File couldn\t be deleted, try it manually or check permissions.';
		}
		
		$file->delete();
		
		if(count($error) > 0){
			return $error->toJson();
		}
	}
    
}

####第10步 - 您可以在 config/jmedia.php 中配置一些有关文件上传的参数

 return [
	
	'upload_route'			=>	url('ajax/upload_files/'),
	'upload_path'			=>	'uploads/'.date('d-m-Y'),
	'thumbnail_directory'		=>	'thumbnails',
	'width_thumbnail'		=>	200,
	'height_thumbnail'		=>	200
	
 ];

####第11步 - 创建您的路由监听器(routes.php)

Route::post('ajax/upload_files', 'AjaxController@index');
Route::post('ajax/upload_files/delete', 'AjaxController@delete_image');

##提示

####使用 .htaccess 避免执行某些二进制文件,例如: php_flag engine off

#####(图像别名)Intervention 依赖 我们使用 "intervention/image": "2.*" 依赖项进行图像处理。您也可以使用原生 PHP

#####创建一个 "isAjax" 中间件

	<?php namespace app\Http\Middleware;
	
	use Closure;
	use Illuminate\Contracts\Routing\Middleware;
	use Illuminate\Http\RedirectResponse;
	
	class isAjax implements Middleware {
	
		public function handle($request, Closure $next)
		{
			if ($request->ajax()){
				return $next($request);
			}else{
				return new RedirectResponse(url('/'));
			}
			
		}
	}

#待办事项列表

  -- Add Gallery (Table created but not implemented yet)