gomonkey / yii2-easy-uploader

一个简单易用的文件夹创建和图片或文件上传工具

安装次数: 322

依赖项: 0

建议者: 0

安全: 0

星标: 15

关注者: 3

分支: 4

开放问题: 0

类型:yii2-extension

dev-master 2020-07-13 09:29 UTC

This package is not auto-updated.

Last update: 2024-09-20 19:45:27 UTC


README

Yii2

yii2的简单上传扩展

通过一行简单的代码即可创建文件夹和上传图片。

安装

安装此扩展的首选方式是通过 composer

运行以下命令

php composer.phar require  gomonkey/yii2-easy-uploader "*"

或在您的 composer.json 文件的 require 部分添加以下内容:

"gomonkey/yii2-easy-uploader": "*"

使用方法

参数

在您的配置文件(common/config/main.php)中添加,以便在前后端使用

'components' => [
        'uploaders' => [
            'class' => 'gomonkey\uploader\Uploader',
            'baseFrontendUrl' =>   dirname(dirname(__DIR__)) . '/frontend/web/images',
            'baseBackendUrl' => dirname(dirname(__DIR__)) . '/backend/web/images',
            'rename' => true, // Rename file 
            'random' => 12, // random alphanumeric name
            'remove' => true, // Remove original file after upload
            'folders' => [
                [
                    'name' => '1200',
                    'quality' => 70,
                    'width' => 1200
                ],
                [
                    'name' => '800',
                    'quality' => 70,
                    'width' => 800
                ],
                [
                    'name' => '600',
                    'quality' => 70,
                    'width' => 600
                ],
                [
                    'name' => 'avatars',
                    'quality' => 70,
                    'width' => 200
                ]
             
            ]

        ],
    ],

如果您使用基本模板,仍然可以使用上面的相同代码,只需将代码放入您的配置文件中,并更改 baseFrontendUrl。您可以删除或注释掉 baseBackendUrl

控制器

在您的控制器中添加 UploadFile

use yii\web\UploadedFile;

单图上传

在您的控制器操作中

$upload = new Yii::$app->uploaders();

/**
If you want to use backend path:
$upload = new Yii::$app->uploaders("backend");
**/

$model->image =  $upload->upload(UploadedFile::getInstance($model, 'image'), "avatars");

$model->image 现在具有已上传图片的名称,准备好保存到数据库中。

多图上传

foreach (UploadedFile::getInstances($model, 'image') as $file) {
    $model->image = (new Yii::$app->uploaders())->upload($file, "avatars");
    
}

从URL上传

现在可以从其他网站通过动态或静态URL上传图片。相同的代码可以在循环中使用

 $model->image = $upload->uploadFromUrl("https://www.website.it/url/to/image/image.jpg",  "myFolder");

注意:不需要上传实例

无限文件夹生成

您可以创建无限多的文件夹。例如,使用用户ID:images/user/3/1200/imagename.jpg

$model->image =  $upload->upload(UploadedFile::getInstance($model, 'image'), "users/".Yii::$app->user->id);

在您的视图中

别忘了在您的表单中使用 multipart/form-data

<?php $form = ActiveForm::begin([
    'options' => ['enctype'=>'multipart/form-data']
]); ?>

从文件夹中删除图片

如果您需要从所有文件夹中删除一个或多个图片

( new Yii::$app->uploaders() )>delete( file, folder );

例如

 (new Yii::$app->uploaders())->delete($model->name, "/products/".Yii::$app->user->id);

它会删除您路径/products/user id/设置的其他文件夹/file中的所有图片

参数

rename (类型:布尔值,默认值:true')

将重命名您上传的文件,如果您不想更改文件名,则将其设置为 false

remove (类型:布尔值,默认值:true')

删除原始文件

random (类型:整数,默认值:10)

随机是字母数字图片名称的长度

baseFrontendUrl (类型:字符串)

您的前端(或基本模板的 web 路径)到图片文件夹的路径

baseBackendUrl (类型:字符串)

您的后端到图片文件夹的路径

folders (类型:数组)

文件夹不是主要的,这些必须在控制器中设置

  • name[] = 是文件夹的名称
  • quality[] = 是上传图片的质量
  • width[] = 是图片的宽度,高度将被缩放

Yii2