feat(boards): 게시글 파일 시스템 개선 및 이미지 미리보기 추가
- Morph map에 Post, Department 모델 등록 (ClassMorphViolationException 해결) - 파일 저장 방식을 API 스타일로 변경 (document_id + document_type) - 파일 미리보기 라우트 및 메서드 추가 (previewFile) - 게시글 상세 페이지에서 이미지 첨부파일을 본문 상단에 풀 너비로 표시 - 비이미지 첨부파일은 하단에 다운로드 목록으로 분리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\View\View;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||
|
||||
class PostController extends Controller
|
||||
@@ -268,7 +269,7 @@ public function uploadFiles(Board $board, Post $post, Request $request): JsonRes
|
||||
/**
|
||||
* 파일 다운로드
|
||||
*/
|
||||
public function downloadFile(Board $board, Post $post, int $fileId): StreamedResponse|RedirectResponse
|
||||
public function downloadFile(Board $board, Post $post, int $fileId): BinaryFileResponse|StreamedResponse|RedirectResponse
|
||||
{
|
||||
// 게시판 일치 확인
|
||||
if ($post->board_id !== $board->id) {
|
||||
@@ -283,6 +284,24 @@ public function downloadFile(Board $board, Post $post, int $fileId): StreamedRes
|
||||
return $this->postService->downloadFile($post, $fileId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 파일 미리보기 (이미지 인라인 표시)
|
||||
*/
|
||||
public function previewFile(Board $board, Post $post, int $fileId): BinaryFileResponse|StreamedResponse|RedirectResponse
|
||||
{
|
||||
// 게시판 일치 확인
|
||||
if ($post->board_id !== $board->id) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
// 비밀글 접근 권한 확인
|
||||
if (! $post->canAccess(auth()->user())) {
|
||||
return back()->with('error', '파일에 접근할 수 없습니다.');
|
||||
}
|
||||
|
||||
return $this->postService->previewFile($post, $fileId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 파일 삭제 (AJAX)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user