Yii2 圖片上傳組件

common/components 路徑下新建Upload.php

<?php
namespace common\components;

use yii;
use yii\web\UploadedFile;
use yii\helpers\FileHelper;

class Upload
{
    /**
     * @param \yii\base\Model $model 實(shí)例化模型
     * @param string $inputName  <input name="$inputName">
     * @param array $config 上傳文件配置
     * @return array
     */
    public function upload($model, $inputName, $config = [])
    {
        // 文件上傳路徑
        $folder = isset($config['uploadPath']) ? '/' . $config['uploadPath'] . '/' : '/';
        $path = Yii::getAlias('@uploads') . $folder;
        if (FileHelper::createDirectory($path) === true) {
            $files = UploadedFile::getInstance($model, $inputName);
            if ($files) {
                $fileSize = isset($config['fileSize']) ? $config['fileSize'] : 50 * 1024 * 1024; // 默認(rèn)50M
                $allowType = isset($config['allowType']) ? $config['allowType'] : ['jpg', 'jpeg', 'gif', 'png', 'bmp'];

                // 擴(kuò)展名
                $ext = $files->getExtension();
                if (empty($ext)) {
                    $ext_tmp = explode('/', $files->type);
                    $ext = isset($ext_tmp[1]) ? $ext_tmp[1] : '';
                }
                if (!in_array(strtolower($ext), $allowType)) {
                    return ['code' => -1, 'msg' => '上傳的文件類型不允許', 'data' => []];
                }

                // 文件大小
                if ($files->size > $fileSize) {
                    return ['code' => -1, 'msg' => '上傳的文件大小超過給定值', 'data' => []];
                }

                // 文件名
                $fileName = uniqid() . '.' . $ext;
                if ($files->saveAs($path . $fileName)) {
                    return ['code' => 0, 'msg' => '上傳成功', 'data' => $folder . $fileName];
                } else {
                    return ['code' => -1, 'msg' => '文件保存失敗', 'data' => []];
                }
            } else {
                return ['code' => -1, 'msg' => '未上傳文件', 'data' => []];
            }
        } else {
            return ['code' => -1, 'msg' => '上傳路徑錯(cuò)誤', 'data' => []];
        }
    }
}

調(diào)用第一種方法:
可在common\config/main.php 配置組件

'uploadFile' => [
    'class' => 'common\components\Upload',
],

調(diào)用

$logo = Yii::$app->uploadFile->uploadImage($model, '/logo/', 'logoFile');

第二種:直接實(shí)例化調(diào)用

use common\components\Upload;
$upload = new Upload();
$upload->uploadImage($model, '/logo/', 'logoFile');
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容