kak/storage

文件上传/调整大小/裁剪文件移动存储

安装次数: 1,329

依赖项: 1

建议者: 0

安全性: 0

星星: 6

关注者: 5

分支: 2

开放问题: 1

类型:yii2-extension

0.1.4 2019-08-14 13:05 UTC

This package is auto-updated.

Last update: 2024-09-17 22:36:56 UTC


README

文件上传/调整大小

欢迎任何贡献 预览

裁剪预览(大图像)

安装

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

运行以下命令之一

php composer.phar require --prefer-dist kak/storage "*"

或在您的 composer.json 文件的 require 部分添加

"kak/storage": "*"

并运行命令 composer update

用法

请设置配置参数 Yii::$app->params

/** @docs https://console.aws.amazon.com/iam/home Generation access key and secret */
$amazon_config = [
    'key' => '', 
    'secret' => '',
    'bucket' => 'my',
    'level'  => 2,
    'type'   => 'amazon',
    'region' => 'us-east-1',
]

//...
'storage' => [
    'storages' => [
         // use amazon config
        'photo'  => $amazon_config,
        'custom_name' => [],
        // local server save files
        'tmp'  => [       
            'level' => 0,
        ],
    ],
],

例如使用控制器上传

    public function actions()
    {
         return [
             'upload' => [
                 'class' => UploadAction::className(),
                 'form_name' => 'kak\storage\models\UploadForm',
                 'storage'  => 'tmp',   // save image default tmp storage
                 'resize_image' => [    // list formats
                     'preview'   => [1024,1024, UploadAction::IMAGE_RESIZE, 'options' => [] ],
                     'thumbnail' => [120,120, UploadAction::IMAGE_THUMB],
                     '350'       => [350,280, UploadAction::IMAGE_RESIZE],
                 ]
             ],
         ];
     }

resize_image.options

  • 如果为真,则保存动画图像,否则首先移动剪辑
  • 质量 10 - 100

保存模型然后控制器

    /**
    * @param $id int edit post
    * @return string
    */         
    public function actionUpdate($id)
    {
        $model = $this->findPostById($id);
        $uploadForm = new \kak\storage\models\UploadForm(['meta_name' => 'image_base']);
        $uploadForm->meta = $postModel->images_json;

        if($this->savePostForm($model, $uploadForm)) {
            return $this->redirect(['/dashboard/post/update','id' => $postModel->id]);
        }
        return $this->render('form',compact(
            'model', 'uploadForm'
        ));
    }

    /**
     * @param $model Post
     * @param $uploadForm \kak\storage\models\UploadForm
     * @return bool
     */
    protected function savePostForm(&$model,&$uploadForm)
    {
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {

            $result = $uploadForm->saveToStorage('tmp','images',[]);
            $model->images_json = Json::encode($result);
            
            return $model->save();
        }
        
        return false;
    }

扩展安装后,只需在代码中使用即可

<div>
    <?=\kak\storage\Upload::widget([
        'model' => $uploadFormModel,
        'url' => ['/dashboard/default/upload', 'resize_type' => 'thumbnail,350']    
    ]); ?>
</div>
<hr>

如果 GET 中只有这些类型,则将保存调整大小的图像

使用 pjax

注册资产主要布局

StorageAsset::register($view);

pjax 事件添加代码

    $(document).on('pjax:end','.pjax-wrapper',function(e){
        //init old gui
        $('.kak-storage-upload').kakStorageUpload({});
    });

路线图

2018: Q1 添加 Google Cloud 存储,将 guzzle http 更改为 yii2-http-client,更改 aws-sdk-php Q2 创建新的上传小部件 + 测试