levaral-dev/upload-v2

此软件包已被 弃用 并不再维护。未建议替代软件包。
此软件包的最新版本(dev-master)没有可用的许可信息。

用于 Laravel 框架的 Levaral 文件上传软件包

dev-master 2018-11-19 10:49 UTC

This package is not auto-updated.

Last update: 2021-01-30 03:01:11 UTC


README

composer require levaral-dev/upload-v2:dev-master

运行 laravel publish,这将创建配置文件 upload.php 和迁移

php artisan vendor:publish --provider="Levaral\Upload\UploadServiceProvider" 

将路由放入 routs/web.php 或 routs/api.php, wherever you want,如果你在 web.php 中添加路由,则必须在 VerifyCsrfToken 中间件中接受 URL

Action::post('upload', \Levaral\Upload\Http\PostUpload::class, 'upload'); 

配置

return [
    // storage disk
    'disk' => env('UPLOAD_DISK', 'public'), 
     
     // file fields configration  
    'files' => [         
        'sample_logo' => [     //Required: field
            'resize' => [      //Optional: Resize options, use with images
                'thumb' => [    //possible resize options
                    'height' => 100,
                    'width' => 100,
                    'fit' => 'stretch', // ['stretch', 'crop', 'contain', 'max', 'fill', 'pad']
                    'crop' => [
                        'x' => 100,
                        'y' => 100
                    ],
                    'color' => '#ffffff' 
                    'create_on_upload' => true   //Optional: create resize image upfront 
                ]
            ],
            'validation' => 'required|mimes:jpeg,png,gif|size:2000', //Required: laravel validation string
            //Optional:
            //'optimize' => true, //optimize image on upload
            //'keep_original_file' => true //Note: this might take time if the image file is uploaded to cloud
        ],
        
        'sample_document' => [   //Required: field
            'validation' => 'required|size:2000', //Required: laravel validation string
        ]
    ],
];

POST 请求

POST 请求接受两个参数(file_upload, file_field)。在 'file_upload' 中传递文件,在 'file_field' 中传递字段名,例如 company_logo, product_images 等...

POST 响应

{
    "success": true,
    "upload_id": 25,
    "url": "http://testl6.test/storage/uploads/bcb6a904-5a9f-415c-b1d1-0c35e7cda1a4/download.png",
    "urls": {
        "thumb": "http://testl6.test/storage/cache/bcb6a904-5a9f-415c-b1d1-0c35e7cda1a4/download-thumb.png"
    }
}

通过 URL 获取文件并上传

为此,请使用 FileUploadService 类并将其注入到您的控制器类或其他类中,例如

$upload = $this->fileUploadService->uploadFileByUrl('http://vkwins.com/wp-content/uploads/2017/10/Lorem-Ipsum.jpg', 'sample_logo');

使用 Upload Eloquent 对象获取原始文件 URL 或调整大小后的图像 URL

$upload->getPublicUrl();  // will return original uploaded file url
$upload->getPublicUrl('sample_logo.resize.thumb');  // will return resized image url

删除所有超过 24 小时的冗余文件

php artisan levaral:delete-files

重新生成所有调整大小后的图像或特定 file_field

levaral:generate-images {fileField?}

图像优化

图像优化依赖于 laravel 软件包 https://github.com/spatie/laravel-image-optimizer,要安装图像优化工具,请运行以下命令

sudo apt-get install jpegoptim
sudo apt-get install optipng
sudo apt-get install pngquant
sudo npm install -g svgo
sudo apt-get install gifsicle

批量优化上传的图像,这将仅优化图像

levaral:optimize-images {fileField?}

通过指定路径来优化图像,这将仅优化图像

levaral:optimize-images {path}  //give {path} like public, public/theme/images