'bmp', 'image/jpeg' => 'jpg', 'image/png' => 'png', 'image/gif' => 'gif'); public $imgtype = array('bmp','jpg','png','gif','jpeg'); public $filepath; public $enableCsrfValidation = false; public function behaviors() { return ArrayHelper::merge(parent::behaviors(), [ 'authenticator' => [ 'class' => QueryParamAuth::className(), 'tokenParam' => "token",//access-token修改为token 'optional' => [//不需要认证方法名 array ], ] ]); } public function actionUpload() { $imgtype = Yii::$app->request->post('imgtype'); if(empty($imgtype)) { return Apireturn::sent(0,'图片类型不能为空',200); } $file= $_FILES; if(count($file)<=0) return Apireturn::sent(0,'未上传图片',200); $url =array(); $folder = "/".$imgtype."/".date("Ym")."/".date("d")."/"; $file_path=\Yii::getAlias('@common/allupload').$folder; for ($i=0;$iuploadFile($files,$file_path,2*1024*1024,$this->imgtype); if(!empty($result['dest'])) { $res = self::uploadresize($file_path.$result['dest'],$file_path."s_".$result['dest']); if($res){ $url[] = $folder ."s_". $result['dest']; }else{ $url[] = $folder . $result['dest']; } } else { return Apireturn::sent(0, $result['mes'], 200); } } return Apireturn::sent(1,'success',200,$url); } public function uploadFile($file,$path='./uploads',$max_size,$allowExt){ $filename=$file['name']; $type=$file['type']; $temp_name=$file['tmp_name']; $error=$file['error']; $size=$file['size']; if ($error==UPLOAD_ERR_OK) { if ($size>$max_size) { $res['mes']=$filename."文件超过规定上传大小,最多2M"; } $ext=$this->getExt($filename); if (!in_array($ext, $allowExt)) { $res['mes']=$filename.'文件名不合乎规范'; } // if (!is_uploaded_file($temp_name)) { // $res['mes']=$filename."文件不是通过HTTP POST 方法上传上传过来的"; // } if (@$res) { return $res; } if (!file_exists($path)) { mkdir($path,0777,true); chmod($path, 0777); } $fname=$this->getUniName(); $url =$fname.'.'.$ext; $destination=$path.'/'.$fname.'.'.$ext; if (move_uploaded_file($temp_name, $destination)) { $res['mes']=$filename.'上传成功'; $res['dest']=$url; }else{ $res['mes']=$filename."文件上传失败"; } }else{ switch ($error) { case '1': $res['mes']="超过了配置文件上传文件的大小"; break; case '2': $res['mes']="超过表单设置上传文件文件的大小"; break; case '3': $res['mes']="文件部分被上传"; break; case '4': $res['mes']="没有文件被上传"; break; case '6': $res['mes']="没有找到临时目录"; break; case '7': $res['mes']="文件不可写"; break; default: $res['mes']="上传文件失败"; break; } } return $res; } public function getExt($filename){ $arr=explode('.', basename($filename)); return end($arr); } public function getUniName(){ return md5(uniqid(microtime(true),true)); } /** * 生成缩略图 * @param $localimg * @param $remoteimg * @param int $x * @param int $y * @return bool */ static function uploadresize($localimg,$remoteimg,$x = 400,$y = 400){ $resize = new ImageResize(); $result = $resize->resize($localimg,$remoteimg,$x,$y); if(!$result){ return false; } return true; } }