RwImageUpload
업무 화면에서 사진과 그림 파일을 선택하거나 붙여넣고, 미리보기·제거·저장을 처리하는 이미지 전용 업로드 구성요소입니다. 프로필 사진, 설비 사진과 문서 첨부 이미지처럼 업로드 전에 내용을 확인해야 하는 화면에 사용합니다.
화면 구성
이미지는 FileList에 RsFileInfo 형식으로 보관됩니다. IsShowUpload, IsShowRemove, IsShowFileContent로 업로드 버튼, 제거 버튼과 미리보기 표시를 제어하고, 조회 화면에서는 ReadOnly를 사용해 변경을 막습니다.
주요 설정
| 항목 | 기본값 | 설명 |
|---|---|---|
UploadPath |
AppCommon.UploadImgPath |
이미지 저장 경로 기준 |
Accept |
없음 | 선택 가능한 이미지 형식 안내 |
MaxFiles |
1 |
이미지 최대 개수 |
FileList |
빈 목록 | 기존·신규 이미지 목록 |
IsImgMode |
false |
이미지 표시 방식 사용 여부 |
ReadOnly |
false |
추가와 제거 차단 여부 |
이미지 추가
사용자는 파일 선택 버튼이나 클립보드 붙여넣기로 이미지를 추가할 수 있습니다. Accept="image/*"를 지정하면 선택 창에서 이미지 파일을 우선 표시할 수 있지만, 실제 파일 형식 검사는 서버에서도 수행해야 합니다.
미리보기
IsShowFileContent가 켜져 있으면 선택한 이미지를 저장 전에 확인할 수 있습니다. 큰 원본을 그대로 여러 장 렌더링하면 브라우저 메모리를 많이 사용할 수 있으므로 목록 화면에서는 썸네일을 사용하고, 원본은 별도 보기에서 여는 방식을 권장합니다.
저장과 제거
현재 목록을 저장하려면 Save()를 호출합니다. 기존 BaseDac 저장 흐름에서는 Save(page_no, target_id, attr01, dac)를 사용할 수 있습니다. 제거된 항목은 RemoveFileList와 이벤트를 통해 확인하고, 실제 서버 파일 삭제는 업무 API의 보존 정책에 따라 처리합니다.
사용 예
<RwImageUpload FileList="photos"
Accept="image/png,image/jpeg,image/webp"
MaxFiles="4"
IsImgMode="true"
OnChanged="HandleImageChanged"
OnRemoved="HandleImageRemoved" />
다른 대상을 선택할 때는 Clear()로 이전 임시 이미지를 비우고 새 목록을 넣습니다. 서버 정보가 갱신된 경우 Update()를 호출해 화면 상태를 맞춥니다.
다운로드
저장된 이미지는 ApiDownloadFile로 내려받을 수 있습니다. 원본 다운로드가 허용되지 않는 화면에서는 썸네일 URL과 원본 URL을 분리하고, API에서 현재 사용자와 대상 문서의 접근 권한을 확인합니다.
보안과 품질
확장자와 MIME 형식만으로 안전한 이미지라고 판단하지 않습니다. 서버에서 실제 파일 구조, 최대 픽셀 크기와 용량을 검사하고 파일명을 저장 경로로 직접 사용하지 않습니다. 위치 정보가 포함된 사진은 업무 정책에 따라 메타데이터 제거 여부를 결정합니다.
문제 확인
- 세로로 촬영한 사진의 회전 정보가 미리보기와 저장 결과에서 같은지 확인합니다.
- 같은 이미지를 다시 선택했을 때 중복 처리 기준을 정합니다.
- 업로드 실패 후 선택한 이미지가 사라지지 않도록 합니다.
- 삭제 권한이 없는 사용자는 제거 버튼뿐 아니라 서버 삭제도 차단합니다.
