본문으로 건너뛰기
Documentation

RwFileUpload

마지막 게시: 2026-07-21 19:00

RwFileUpload

파일 선택, 붙여넣기, 목록 표시, 삭제와 저장을 한 흐름에서 처리하는 업로드 구성요소입니다. 새 파일과 기존 파일을 RsFileInfo 목록으로 관리하며, 화면 설정에 따라 이미지 미리보기와 다운로드도 제공합니다.

화면 구성

IsShowUpload, IsShowRemove, IsShowFileContent로 업로드 버튼, 삭제 기능과 파일 내용을 각각 제어합니다. ReadOnly가 켜지면 수정 작업을 막고 조회 용도로 사용합니다. 레이아웃을 조정해야 할 때는 ParentClassChildClass를 지정합니다.

주요 설정

항목 기본값 용도
UploadPath AppCommon.UploadImgPath 저장 경로 기준
Accept 없음 파일 선택 창의 허용 형식 안내
MaxFiles 1 선택 가능한 파일 수
MaxFileSize 구성요소 제한값 파일 한 건의 최대 크기
FileList 빈 목록 기존·신규 파일 표시
IsImgMode false 이미지 중심 표시 여부
ReadOnly false 업로드와 삭제 가능 여부

파일 추가

사용자는 파일 선택 창이나 클립보드 붙여넣기로 파일을 추가할 수 있습니다. 다른 구성요소에서 Base64 데이터를 전달해야 하는 경우 AddBase64FilesAsync를 사용하며, 반환된 RsFileInfo 목록의 ClientId로 개별 항목을 추적할 수 있습니다.

파일 제거

목록에서 제거하면 OnRemoved가 호출되고, 개별 파일 정보가 필요한 화면에서는 OnFileRemoved를 사용합니다. 임시로 추가한 파일은 RemoveByClientIdAsync로 제거할 수 있습니다. 화면에서 목록을 지웠다고 서버 파일이 자동 삭제되는 것으로 가정하지 말고 업무 API의 삭제 정책을 확인합니다.

저장

Save()는 현재 목록을 구성요소의 저장 흐름에 반영합니다. 페이지 번호와 대상 식별자, 속성값, BaseDac을 사용하는 기존 저장 경로는 Save(page_no, target_id, attr01, dac)를 호출합니다. 신규 API 기반 화면은 파일 업로드 결과로 받은 식별자를 업무 모델에 연결하는 방식을 우선합니다.

사용 예

<RwFileUpload FileList="attachments"
              Accept=".pdf,.xlsx,.png"
              MaxFiles="5"
              MaxFileSize="@(20 * 1024 * 1024)"
              OnChanged="HandleFilesChanged"
              OnFileRemoved="HandleFileRemoved" />

Accept는 파일 선택기의 안내일 뿐 보안 검증이 아닙니다. 서버에서도 크기, 실제 콘텐츠 형식, 확장자와 저장 경로를 다시 확인해야 합니다.

다운로드와 초기화

기존 파일은 ApiDownloadFile을 통해 내려받을 수 있습니다. 다른 업무 대상을 선택할 때는 Clear()로 이전 임시 목록을 비우고 새 FileList를 바인딩합니다. 서버에서 갱신된 정보가 있으면 Update()로 표시 상태를 맞춥니다.

문제 확인

  • 허용 개수와 크기를 넘긴 파일에 구체적인 안내가 표시되는지 확인합니다.
  • 같은 파일을 반복 선택하거나 저장 버튼을 여러 번 눌러도 중복 저장되지 않게 합니다.
  • 업로드에 실패한 임시 파일과 이미 저장된 파일을 구분합니다.
  • 파일 이름을 서버 경로나 저장 키로 직접 사용하지 않습니다.
  • 다운로드 API에서도 현재 사용자의 파일 접근 권한을 확인합니다.

수정 이력

이 문서의 변경 내역을 시간순으로 볼 수 있습니다.

표시할 수정 이력이 없습니다.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.