게시판의 파일 업로드 로직을 분석하기 위해 관련 코드 조회 하면,
Searched codebase for "file upload board post"
검색 결과를 바탕으로 게시판의 파일 업로드 로직을 분석해드리겠습니다.
- 파일 업로드 API 엔드포인트
-
/api/v1/board/{bo_table}/writes/{wr_id}/files
경로로 파일 업로드 API가 제공됩니다.
- multipart/form-data 형식으로 파일을 전송해야 합니다.
- 파일 업로드 처리 로직 (BoardService.upload_files 메서드)
- 관리자가 아닌 경우 자신의 글에만 파일을 업로드할 수 있습니다.
- FILE_DIRECTORY/{bo_table} 경로에 파일이 저장됩니다.
- file_dels 파라미터로 전달된 파일 번호에 해당하는 파일을 삭제합니다.
- 파일 크기 제한: board.bo_upload_size 설정값을 초과할 수 없습니다.
- 파일 확장자 제한: 이미지, 플래시, 동영상 파일의 확장자를 체크합니다.
- 파일 업로드 폼
- board.bo_upload_count 설정값에 따라 업로드 가능한 파일 수가 제한됩니다.
- board.bo_upload_size 설정값을 초과할 수 없습니다.
- is_file_content 설정이 true인 경우 파일 설명을 입력할 수 있습니다.
- 기존 파일이 있는 경우 삭제 체크박스가 표시됩니다.
- 클라이언트 사이드 검증
- JavaScript를 통해 파일 크기를 미리 체크합니다.
- 파일 크기가 제한을 초과하는 경우 업로드를 차단합니다.
이러한 구조로 게시판의 파일 업로드 기능이 구현되어 있습니다. 파일 업로드 시 보안과 사용자 편의성을 고려한 다양한 검증과 제한이 적용되어 있습니다.
파일 업로드 위치 는?
파일 업로드 위치를 확인하기 위해 관련 코드를 더 자세히 살펴보겠습니다.
Searched codebase for "FILE_DIRECTORY file upload path"
파일 업로드 위치에 대한 정보를 찾기 위해 설정 파일을 확인해보겠습니다.
Searched codebase for "FILE_DIRECTORY config setting"
파일 업로드 위치에 대한 정보를 찾아보았습니다. 코드를 분석한 결과, 파일 업로드 위치는 다음과 같습니다:
- 게시판 파일 업로드 위치:
- 기본 경로: data/board/{bo_table}/
- bo_table은 게시판의 테이블명으로, 각 게시판별로 별도의 디렉토리가 생성됩니다.
- 회원 이미지/아이콘 업로드 위치:
- 회원 이미지: data/member/image/{회원ID 첫 2자리}/{회원ID}.{확장자}
- 회원 아이콘: data/member/icon/{회원ID 첫 2자리}/{회원ID}.{확장자}
모든 파일은 data 디렉토리 하위에 저장되며, 이 디렉토리는 설치 시 자동으로 생성됩니다. 파일 업로드 시 다음과 같은 특징이 있습니다:
- 파일명은 보안을 위해 랜덤하게 생성됩니다.
- 각 게시판별로 별도의 디렉토리가 생성되어 파일이 관리됩니다.
- 회원 이미지/아이콘은 회원ID의 첫 2자리를 기준으로 하위 디렉토리가 생성됩니다.
이러한 구조로 파일이 업로드되며, 각 기능별로 분리된 디렉토리에서 관리됩니다.
파일 업로드 위치 변경은 어디서 ?
파일 업로드 위치 변경을 위한 설정을 찾아보겠습니다.
Searched codebase for "FILE_DIRECTORY config setting change"
파일 업로드 위치 변경을 위한 설정을 찾아보았습니다. 파일 업로드 위치는 다음과 같이 변경할 수 있습니다:
- 기본 데이터 디렉토리 설정:
- .env 파일에서 DATA_DIRECTORY 설정을 통해 기본 데이터 디렉토리를 변경할 수 있습니다.
- 각 기능별 파일 업로드 위치:
- 게시판 파일: data/board/{bo_table}/
- 회원 이미지/아이콘: data/member/image/ 또는 data/member/icon/
- 파일 업로드 관련 설정:
- .env 파일에서 다음과 같은 설정을 변경할 수 있습니다:
env
Apply to board.py
# 에디터 업로드 설정
UPLOAD_IMAGE_RESIZE=false # 에디터 이미지 리사이즈 사용 여부
UPLOAD_IMAGE_SIZE_LIMIT=20 # 이미지 업로드 제한 용량 (MB)
UPLOAD_IMAGE_RESIZE_WIDTH=1200 # 이미지 리사이즈 너비 (px)
UPLOAD_IMAGE_RESIZE_HEIGHT=2800 # 이미지 리사이즈 높이 (px)
UPLOAD_IMAGE_QUALITY=80 # 이미지 품질 (0~100)
- 게시판별 업로드 설정:
- 각 게시판별로 다음과 같은 설정을 변경할 수 있습니다:
- bo_upload_size: 파일 업로드 용량 제한
- bo_upload_count: 파일 업로드 개수 제한
- bo_upload_width: 이미지 업로드 너비 제한
- bo_upload_height: 이미지 업로드 높이 제한
- 회원 이미지/아이콘 설정:
- 관리자 설정에서 다음과 같은 설정을 변경할 수 있습니다:
- cf_member_icon_size: 회원 아이콘 크기 제한
- cf_member_icon_width: 회원 아이콘 너비 제한
- cf_member_icon_height: 회원 아이콘 높이 제한
- cf_member_img_size: 회원 이미지 크기 제한
- cf_member_img_width: 회원 이미지 너비 제한
- cf_member_img_height: 회원 이미지 높이 제한
파일 업로드 위치를 변경하려면 .env 파일에서 DATA_DIRECTORY 설정을 변경하고, 변경된 디렉토리에 대한 적절한 권한을 설정해야 합니다. 또한 변경된 디렉토리가 웹 서버에서 접근 가능하도록 설정해야 합니다.
.env 파일에서 DATA_DIRECTORY 설정이 없는데?
죄송합니다. .env 파일의 설정을 직접 확인해보겠습니다.
Read .env
L1-100
네, 죄송합니다. 제가 잘못 설명드렸습니다. .env 파일에는 DATA_DIRECTORY 설정이 없습니다.
파일 업로드 위치는 코드에서 하드코딩되어 있습니다:
- 게시판 파일: data/board/{bo_table}/
- Q&A 파일: data/qa/
- 회원 이미지/아이콘: data/member/image/ 또는 data/member/icon/
- 에디터 이미지: data/editor/
이러한 경로들은 코드에서 직접 정의되어 있으며, 현재는 .env 파일을 통해 변경할 수 있는 방법이 없습니다.
만약 파일 업로드 위치를 변경하고 싶으시다면, 다음과 같은 방법을 고려해볼 수 있습니다:
- 소스 코드를 수정하여 파일 업로드 경로를 변경
- 심볼릭 링크를 사용하여 원하는 위치로 연결
- 웹 서버 설정에서 /data 경로를 원하는 위치로 리다이렉트
현재는 이러한 방법들 중 하나를 선택하여 수동으로 변경해야 합니다. 향후 버전에서는 .env 파일을 통해 파일 업로드 위치를 설정할 수 있도록 개선될 수 있을 것 같습니다.
댓글목록
등록된 댓글이 없습니다.