"临时文件错误", "ERROR_TMP_FILE_NOT_FOUND" => "找不到临时文件", "ERROR_SIZE_EXCEED" => "文件大小超出网站限制", "ERROR_TYPE_NOT_ALLOWED" => "文件类型不允许", "ERROR_CREATE_DIR" => "目录创建失败", "ERROR_DIR_NOT_WRITEABLE" => "目录没有写权限", "ERROR_FILE_MOVE" => "文件保存时出错", "ERROR_FILE_NOT_FOUND" => "找不到上传文件", "ERROR_WRITE_CONTENT" => "写入文件内容错误", "ERROR_UNKNOWN" => "未知错误", "ERROR_DEAD_LINK" => "链接不可用", "ERROR_HTTP_LINK" => "链接不是http链接", "ERROR_HTTP_CONTENTTYPE" => "链接contentType不正确", "INVALID_URL" => "非法 URL", "INVALID_IP" => "非法 IP" ]; /** * 上传错误检查 * @param string $errCode * @return string */ public static function getStateInfo($errCode) { return !self::$stateMap[$errCode] ? self::$stateMap["ERROR_UNKNOWN"] : self::$stateMap[$errCode]; } /** * 文件上传 * * @param \Illuminate\Http\UploadedFile $file * @return array */ public static function fileUpload($file, $scene = '') { //读取上传参数 $upload_file_size = intval(Setting::getValueByKey('upload_file_size', 0)); $upload_file_ext_list = Setting::getValueByKey('upload_file_ext_list'); $upload_file_ext_list == '' && $upload_file_ext_list = 'png,jpg,jpeg,gif,bmp'; //文件大小判断 $upload_file_size *= 1048576; //文件上传最大 $filesize = $file->getSize(); $filename = $file->getFilename(); $origin = $file->getClientOriginalName(); $ext = $file->guessExtension(); empty($scene) || $scene .= '/'; //文件扩展名判断 $upload_file_ext_list = explode(',', strtolower(str_replace(' ', '', $upload_file_ext_list))); if (!in_array($ext, $upload_file_ext_list)) { return [ 'state' => self::getStateInfo('ERROR_TYPE_NOT_ALLOWED'), 'url' => '', 'title' => $filename, 'original' => $origin, 'type' => '.' . $ext, 'size' => $filesize, ]; } //文件大小校验 if ($upload_file_size > 0 && $filesize > $upload_file_size) { return [ 'state' => self::getStateInfo('ERROR_SIZE_EXCEED'), 'url' => '', 'title' => $filename, 'original' => $origin, 'type' => '.' . $ext, 'size' => $filesize, ]; } //读取存储参数 $use_qiniu_storage = Setting::getValueByKey('use_qiniu_storage', 0); $qiniu_url = Setting::getValueByKey('qiniu_url', ''); $access_key = Setting::getValueByKey('qiniu_access_key', ''); $secret_key = Setting::getValueByKey('qiniu_secret_key', ''); $bucket_name = Setting::getValueByKey('qiniu_bucket_name', ''); $url = $use_qiniu_storage ? $qiniu_url : url(''); if ($use_qiniu_storage) { $file_obj = new \SplFileObject($file->getPathname()); $file_content = $file_obj->fread($file->getSize()); $upManager = new UploadManager(); $auth = new Auth($access_key, $secret_key); $token = $auth->uploadToken($bucket_name); list($ret, $error) = $upManager->put($token, $filename, $file_content); if ($error) { return [ 'state' => is_string($error) ? $error : $error->message(), 'url' => '', 'title' => $filename, 'original' => $origin, 'type' => '.' . $ext, 'size' => $filesize, ]; } $file_url = $url . '/' . $ret['key']; } else { $path = '/upload/' . $scene . date('Ymd') . '/'; $full_path = public_path() . $path; file_exists($path) || @mkdir($full_path, 0777, true); $file->move($full_path); if($scene =='admin/'){ $file_url =$path . $filename; }else{ $file_url = $url . $path . $filename; } } return [ 'state' => self::getStateInfo(0), 'url' => $file_url, 'title' => $filename, 'original' => $origin, 'type' => '.' . $ext, 'size' => $filesize, ]; } }