sem-soft/yii2-filestorage

用于存储上传文件的Yii2组件和模型

安装次数: 8,763

依赖项: 1

建议者: 0

安全性: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:yii2-components

1.0.10 2018-02-02 08:40 UTC

This package is auto-updated.

Last update: 2024-09-07 07:25:30 UTC


README

通过composer安装

composer require sem-soft/yii2-filestorage

或者将以下代码添加到composer.json的require部分,然后在控制台运行composer update

"sem-soft/yii2-filestorage": "*"

执行迁移

$ ./yii migrate/up --migrationPath=@vendor/sem-soft/yii2-filestorage/migrations

使用方法

在配置文件中执行

<?php
...
  'components'  =>  [
    ...
    'filestorage'	=>  [
        'class'             => \sem\filestorage\FileStorage::className(),
        'storageBaseUrl'    =>  false,
        'storagePath'       =>  '@webroot',
        'storageDir'        =>  'upload',
        'filemode'          =>  0775 // Если задан, то после создания файла принудительно будет произведена смена прав на указанные
    ]
    ...
  ],
...
 ?>

文件上传控制器操作的示例

    public function actionIndex()
    {
	$model = new \backend\models\FileForm();
	
	if (Yii::$app->request->isPost) {
	    
            $model->imageFile = UploadedFile::getInstance($model, 'imageFile');
	    
            $file = $model->upload();
	    
        }
	
        return $this->render('index', [
	    'model'	=>  $model
	]);
    }
    public function actionIndex1()
   {
       $model = new \backend\models\FileForm();


           $model->imageFile = new \sem\filestorage\adapters\RemoteFile("https://cs7065.userapi.com/c836722/v836722161/4bff2/mdg7cPZvLrM.jpg");

           $file = $model->upload();

       return $this->render('index', [
               'model' => $model
       ]);
   }

从模型上传的示例

<?php

namespace backend\models;

class FileForm extends \yii\base\Model
{
    /**
     * @var UploadedFile
     */
    public $imageFile;

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
        ];
    }
    
    /**
     * @return boolean
     */
    public function upload()
    {
        if ($this->validate()) {
	    $file = new \sem\filestorage\models\File($this->imageFile,[
		'group_code'	=>  'banners',
		'object_id'	=>  '345',
		'allowedExtensions' =>	[
		    'png',
		    'jpeg',
		    'jpg'
		]
	    ]);
	    if ($file->save()) {
		return $file;
	    }
        }
	
	return false;
    }
}

表单视图的示例

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

        <?= $form->field($model, 'imageFile')->fileInput() ?>

        <button type="submit">Submit</button>
    <?php ActiveForm::end() ?>

显示文件数据的示例

    public function actionTest()
    {
	foreach (\sem\filestorage\models\File::find()->all() as $f) {
	    echo $f->getUrl(true) . "<br>";
	    echo $f->url . "<br>";
	    echo $f->name . "<br>";
	    echo $f->path . "<br>";
	    echo $f->size . "<br>";
	    echo \sem\helpers\FileHelper::formatSize($f->size) . "<br>";
	    echo "<br>";
	    echo "<br>";
	}
    }

显示图像数据和缓存的示例

    public function actionTest()
    {
        foreach (\sem\filestorage\models\Image::find()->all() as $f) {
            echo $f->getUrl(true) . "<br>";
            echo $f->url . "<br>";
            echo $f->name . "<br>";
            echo $f->path . "<br>";
            echo $f->size . "<br>";
            echo \sem\helpers\FileHelper::formatSize($f->size) . "<br>";
            echo $f->isImage . "<br>";

            echo "------heighten:<br>";
            $heighten = $f->heighten(300);
            echo $heighten->getUrl(true) . "<br>";
            echo $heighten->url . "<br>";
            echo $heighten->path . "<br>";
            echo \yii\helpers\Html::img($heighten->url);
            echo "<br>";

            echo "------widen:<br>";
            $widen = $f->widen(200);
            echo $widen->getUrl(true) . "<br>";
            echo $widen->url . "<br>";
            echo $widen->path . "<br>";
            echo \yii\helpers\Html::img($widen->url);
            echo "<br>";

            echo "------contain:<br>";
            $contain = $f->contain(100, 120);
            echo $contain->getUrl(true) . "<br>";
            echo $contain->url . "<br>";
            echo $contain->path . "<br>";
            echo \yii\helpers\Html::img($contain->url);
            echo "<br>";

            echo "------cover:<br>";
            $cover = $f->cover(100, 100);
            echo $cover->getUrl(true) . "<br>";
            echo $cover->url . "<br>";
            echo $cover->path . "<br>";
            echo \yii\helpers\Html::img($cover->url);
            echo "<br>";
            echo "<br>";
        }
    }