图片上传

BaseService:

<?php
/**
 * Created by PhpStorm.
 * User: HIAPAD
 * Date: 2019/1/9
 * Time: 17:18
 */

namespace app\common\Services;


class BaseService
{
    protected static $_error_msg = null;
    protected static $_error_code = null;
    public static function _err($msg='',$code = -1){
        if($msg){
            self::$_error_msg = $msg;
        }else{
            self::$_error_msg = '操作失败';
        }
        self::$_error_code = $code;
        return false;
    }

    public static function getLastErrorMsg(){
        return self::$_error_msg?self::$_error_msg:"";
    }


    public static function getLastErrorCode(){
        return self::$_error_code?self::$_error_code:0;
    }

}

UploadService:

<?php
/**
 * 文件上传
 * User: HIAPAD
 * Date: 2019/1/9
 * Time: 17:16
 */

namespace app\common\Services;


//上传服务
class UploadService extends BaseService
{
    //根据文件路径上传
    public static function uploadByFile($file_name,$file_path,$bucket = ''){
        if ( !$file_name ){
            return self::_err("参数文件名是必须的~~");
        }

        if ( !$file_path || !file_exists( $file_path )){
            return self::_err("请输入合法的file_path~~");
        }

        $upload_config = \Yii::$app->params['upload'];
        if ( !isset($upload_config[ $bucket ])){
            return self::_err("指定参数backet错误~~");
        }

        $tmp_file_extend = explode(".",$file_name);
        $file_type = strtolower( end($tmp_file_extend) );

        //在每个篮子下面,按照日期来存储
        $hash_key = md5( file_get_contents( $file_path ));
        $upload_dir_path = UtilService::getRootPath() . "/web" . $upload_config[$bucket]."/";
        $folder_name = date("Ymd");
        $upload_dir = $upload_dir_path.$folder_name;
        if (!file_exists($upload_dir)){
            mkdir($upload_dir,0777,true);
            chmod($upload_dir,0777);
        }
        $upload_full_name = $folder_name."/".$hash_key.".{$file_type}";

        if ( is_uploaded_file( $file_path )){
            if (!move_uploaded_file($file_path,$upload_dir_path.$upload_full_name)){
                return self::_err("上传失败!系统繁忙请稍后再试!");
            }
        }else{
            file_put_contents($upload_dir_path.$upload_full_name,file_get_contents($file_path));
        }

        return [
            'code' => 200,
            'path' => $upload_full_name,
            'prefix' => $upload_config[$bucket]."/"
        ];
    }

}

UploadController:

<?php
/**
 * Created by PhpStorm.
 * User: HIAPAD
 * Date: 2019/1/9
 * Time: 16:33
 */

namespace app\modules\web\controllers;

use app\modules\web\controllers\common\BaseController;
use app\common\Services\UploadService;


class UploadController extends BaseController
{
    protected  $allow_file = ["gif","jpg","png","jpeg"];

    public function actionPic(){
        $uid = $this->post('uid',0);
        if (!$uid){
            $uid = $this->getUid();
        }
        $bucket = trim($this->post("bucket",""));
        $type = $this->post("type");

        $call_back_target = 'window.parent.upload';

        if ( !$uid ){
            return "<script type='text/javascript'>{$call_back_target}.error('系统繁忙请稍后再试');</script>";
        }
        if (!$_FILES || !$_FILES['pic']){
            return "<script type='text/javascript'>{$call_back_target}.error('没有选择文件');</script>";
        }

        $file_name = $_FILES['pic']['name'];
        $tmp_file_extend = explode(".",$file_name);
        if (!in_array( strtolower(end($tmp_file_extend)),$this->allow_file)){
            return "<script type='text/javascript'>{$call_back_target}.error('请上传图片文件,jpg,png,jpeg,gif');</script>";
        }
        $ret = UploadService::uploadByFile( $_FILES['pic']['name'],$_FILES['pic']['tmp_name'],$bucket );

        if( !$ret ){
            return "<script type='text/javascript'>{$call_back_target}.error('".UploadService::getLastErrorMsg()."');</script>";
        }
        return "<script type='text/javascript'>{$call_back_target}.success('{$ret['path']}','$type');</script>";
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值