model(模型)层:
public static function uploadFileNew($file, $params = array()) { $path = $params['path']; //上传文件路径 // $fileType = [];//$params['fileType']; $rootPath = ''; //创建目录 if(!file_exists($rootPath.$path)) { Upload::mkdirs($rootPath.$path); } if(!is_uploaded_file($file['tmp_name'])) { return Upload::runArray('0', '文件不存在'); //是否存在文件 } //获取文件名相关信息 $fileInfo = pathinfo($file["name"]); //获取文件扩展名(后缀) $fileSuffix = $fileInfo['extension']; //检查文件类型 // if(!in_array($fileSuffix, $fileType)) { // return $this->runArray('0', '文件类型不符'); // } //以时间戳命名新文件 $newName = isset($params['newName']) && !empty($params['newName']) ? $params['newName'] : ''; if(empty($newName)) { $newName = time().Upload::createRandString(6); } //检查是否有同名文件 if(file_exists($path.$newName.".".$fileSuffix)) { $newName = $newName."_".Upload::createRandString(6); } //获取临时文件名 $tmpName = $file["tmp_name"]; //最终上传路径.文件名 $filePath = $path.$newName.'.'.$fileSuffix; $savedName = $newName.'.'.$fileSuffix; //上传,并返回信息 if(move_uploaded_file($tmpName, $filePath)) { return Upload::runArray('1', '上传成功',$savedName); } else { return Upload::runArray('0', '移动出错'); } } /** * 创建目录 * @param unknown $dir * @param number $mode * @return boolean */ public static function mkdirs($dir, $mode = 0744){ if (is_dir($dir) || @mkdir($dir, $mode)) { return TRUE; } if (!Upload::mkdirs(dirname($dir), $mode)) { return FALSE; } return @mkdir($dir, $mode); } /** * 信息返回 * @param unknown $state * @param unknown $msg * @return multitype:unknown */ public static function runArray($code, $msg, $arr = array()){ return array('code' => $code, 'msg' => $msg, 'params' => $arr); } /** * 随机字符串 * @param int $length * @return string */ public static function createRandString($length = 32) { $str = array_merge(range('a','z'),range('A','Z'),range(0,9)); shuffle($str); $str = implode('',array_slice($str,0,$length)); return $str; } /** * @param string $state success fail * @param string $msg msg * @param string $params */ public static function runJson($code = 10000, $msg = '', $item = ''){ $json = array(); if($msg){$json['msg'] = $msg;} if($item){ $json['data'] = $item; } $json['code'] = $code; echo json_encode($json,JSON_UNESCAPED_UNICODE);exit; }
控制器层:
public function actionUpload() { $code = DictConstant::SYSTEM_ERROR_STATUS; $message = DictConstant::SYSTEM_ERROR_MESSAGE; $data = []; try { $datePath = 'upload/'.date('Y-m-d',time()).'/'; $paramsArr = [ 'path' => __DIR__.'/../web/'.$datePath, 'fileType' => ['jpg','png'], 'newName' => time(), ]; $para = Upload::uploadFileNew($_FILES["images"], $paramsArr); if($para['code'] == 1) { $data['image'] ='https://'.$_SERVER['SERVER_NAME'].'/'.$datePath.$para['params']; Upload::runJson(1000, 'upload success', ['imgUrl' => $imgUrl]); } else { Upload::runJson(9000, 'upload fail'); $data['image'] = '图片上传失败'; } $code = DictConstant::SUCCESS_STATUS; $message = DictConstant::SUCCESS_MESSAGE; return ['resultCode' => $code, 'message' => $message, 'data' => $data]; } catch ( \Exception $e ) { Yii::error(exceptionFormat($e), 'runException'); return ['resultCode' => $code, 'message' => $message, 'data' => []]; } }