getClientOriginalName(); $randomName = bin2hex(random_bytes(16)); $fileType = $file->getClientMimeType(); $fileSize = $file->getSize(); //$tempFile = $file->getPathname(); $folder = config('custom.data_path') . substr($t_id, 0, 6) . "/"; $targetPath = $folder . $randomName; if (!is_dir($folder)) { mkdir($folder, 0755, true); } try { //move_uploaded_file($tempFile, $targetPath); $file->move($folder, $randomName); chmod($targetPath, 0644); DB::table('SITE_FILES')->insert([ 'F_NAME' => $fileName, 'R_NAME' => $randomName, 'TABLE' => $table, 'T_ID' => $t_id, 'T_ID_TYPE' => $t_id_type, 'F_TYPE' => $fileType, 'F_SIZE' => $fileSize, 'REG_USER_NO' => session('Adm.idx') ?? 1, ]); } catch (\Exception $e) { return ['error' => '파일업로드 실패', 'code' => 422]; } } } } public static function uploadFiles($request) { $files = $request['upload'] ?? ''; $table = $request['table'] ?? 'COMPANY_INFO'; $t_id = $request['com_no']; $file_no = $request['file_no'] ?? ''; if (isset($files) && is_array($files)) { foreach ($files as $key => $file) { $originalName = $file->getClientOriginalName(); // 예: "파일명.jpg" $ext = pathinfo($originalName, PATHINFO_EXTENSION); // 확장자만 추출: "jpg" $userInputName = $request['fileName'][$key] ?? null; $fileName = $userInputName ? $userInputName . '.' . $ext : $originalName; $randomName = bin2hex(random_bytes(16)); $fileType = $file->getClientMimeType(); $fileSize = $file->getSize(); $t_id_type = $request['fileType'][$key] ?? '00'; $folder = config('custom.data_path') . substr($t_id, 0, 6) . "/"; $targetPath = $folder . $randomName; if (!is_dir($folder)) { mkdir($folder, 0755, true); } try { $file->move($folder, $randomName); chmod($targetPath, 0644); if (!empty($file_no)) { self::deleteFiles(['f_id' => $file_no]); } // 신규 파일 등록 DB::table('SITE_FILES')->insert([ 'F_NAME' => $fileName, 'R_NAME' => $randomName, 'TABLE' => $table, 'T_ID' => $t_id, 'T_ID_TYPE' => $t_id_type, 'F_TYPE' => $fileType, 'F_SIZE' => $fileSize, 'REG_USER_NO' => session('Adm.idx') ?? 1, ]); } catch (\Exception $e) { return ['error' => '파일업로드 실패', 'code' => 422]; } } }else if($file_no) { // 기존파일인데 업로드 파일이 없을경우 이름과 타입만 변경 if ($request['fileName'][1]) { $ext = pathinfo(DB::table('SITE_FILES')->where('F_NO', $file_no)->value('F_NAME'), PATHINFO_EXTENSION); $data['F_NAME'] = $request['fileName'][1] . '.' . $ext; } if ($request['fileType'][1]) { $data['T_ID_TYPE'] = $request['fileType'][1]; } DB::table('SITE_FILES')->where('F_NO', $file_no)->update($data); } return self::getFiles($request); } public static function getFiles(array $params): array { $tType = $params['t_type'] ?? null; $table = $params['table'] ?? ''; $idx = $params['idx'] ?? ''; $com_no = $params['com_no'] ?? ''; $params['debug'] = $params['debug'] ?? true; $query = DB::table('SITE_FILES as SF') ->select('SF.T_ID', 'SF.F_NO', 'SF.F_NAME', 'SF.R_NAME', DB::raw('LEFT(SF.T_ID, 6) as PATH'), 'SF.REG_USER_NO'); if ($table) { $query->where('SF.TABLE', $table); } if ($idx) { $query->whereIn('SF.T_ID', explode(',', $idx)); }else if ($com_no) { $query->where('SF.T_ID', $com_no); } if ($tType) { $query->where('SF.T_ID_TYPE', $tType); } return $query->get(); } public static function deleteFiles(array $params): string { $table = $params['TABLE'] ?? null; $t_id = $params['T_ID'] ?? null; $f_id = $params['f_id'] ?? null; $query = DB::table('SITE_FILES'); if ($table && $t_id) { $query->where('TABLE', $table)->where('T_ID', $t_id); } else if ($f_id) { $query->whereIn('F_NO', explode(',', $f_id)); } else { return 'Error'; logger('파일삭제 - 검색조건이 없음'); } $files = $query->get(); if (empty($files)) { return 'Success'; } foreach ($files as $file) { $filePath = config('custom.data_path') . substr($file->T_ID, 0, 6) . "/" . $file->R_NAME; if (file_exists($filePath)) { unlink($filePath); } } $query->delete(); return 'Success'; } public static function findFile(array $params): ?array { $fileName = $params['fileName'] ?? ''; $F_NO = $params['file_no'] ?? ''; $query = DB::table('SITE_FILES as SF') ->select('F_NAME', 'T_ID', 'F_TYPE', DB::raw("IFNULL((SELECT COM_NAME FROM COMPANY_INFO CI WHERE SF.T_ID = CI.COM_NO AND SF.TABLE = 'COMPANY_INFO' LIMIT 1), '') as COM_NAME")); if($F_NO) $query->where('F_NO', $F_NO); else $query->where('R_NAME', $fileName)->first(); return $query; } }