File Attachment
파일 첨부 기능 문서
기능 개요
첨부하는 파일의 정보와 실제 파일 데이터를 연결시켜 관리되도록 기능이 구현된 클래스(AttachmentHelper, FtpAttachmentHelper)를 이용한다.
AttachmentHelper와 FtpAttachmentHelper 타입의 개체는 BaseForm에 선언되어 있음
파일의 정보는 데이터베이스의 첨부 파일 마스터 테이블에 저장되며, 파일 데이터는 WAS에 등록된 서비스별로 파일 업로드 루트 디렉터리에 저장된다.
첨부 파일 마스터 테이블 (sysAttachments)
첨부 번호(attdatnum) 필드를 이용한 관계형 테이블 구조
첨부 번호에 일련번호를 부여하여 중복되지 않는 이름으로 서버에 파일을 저장

Class Fields
DefaultUploadDirectory
(상수) 서버에 파일 데이터가 저장되는 기본 디렉터리 이름
Class Properties
BaseUploadDirectory
기본값은 상수인 DefaultUploadDirectory와 같음
현재 개체에 설정된 파일 업로드 기본 디렉터리 이름
DownloadOnly
해당 속성의 값을
true로 설정하면 파일 첨부 팝업에서 다운로드 버튼만 활성화
Filter
파일 업로드 시 FileDialog 에서 "파일 형식" 상자에 표시되는 선택 옵션을 결정하는 필터 문자열을 설정
LimitSizeOfKB
파일 업로드 시 실행되는 FileDialog 를 통해 선택한 파일의 사이즈(KB)를 제한
PreviewPopupSize
첨부파일 미리보기 팝업창의 기본 사이즈를 결정
공통코드(SYS015)에 설정된 사이즈 보다 높은 우선 순위
PreviewPopupSize의 값이 (0,0) 일 경우는 적용되지 않음
NotAllowFileExtensions
파일 업로드 시 허용하지 않을 확장자를 설정
해당 속성 값을 참조하여 OpenFileDialog.FileOk 이벤트에서 처리됨
Class Methods
OpenAttachmentsPopup
파일 첨부 팝업창을 실행
Parameters
BaseEdit attdatnumControl: 첨부 번호를 참조할 BaseEdit 타입의 개체 (BaseEdit.EditValue 속성의 값을 문자열로 변환하여 첨부 번호로 참조. 값이 null일 경우 실행되지 않음)BaseEdit filesControl: 첨부 번호로 등록된 파일명을 표시할 BaseEdit 타입의 개체 (BaseEdit.EditValue 속성에 할당. 값이 null일 경우는 무시)string DBAlias: 파일 정보가 저장될 DB의 별칭 (수동 설정 필요시 사용)string uploadDirectory: 파일 데이터를 저장할 서버의 디렉터리 이름 (수동 설정 필요시 사용)object gridControl: GridControl, GridView 타입의 개체 (AddAttachmentGridInfo 메서드를 통해 첨부 설정이 등록된 Grid를 전제)ref string attdatnum: 첨부 번호를 문자열로 전달 (빈 문자열 전달 시 새로 생성된 첨부 번호가 할당됨)out string files: 첨부 번호로 등록된 파일명을 반환받는데 사용

Commit
변경된 첨부 파일 로그를 실제로 반영
처리가 끝난 후 내부적으로 AcceptChanges 메서드 자동 호출
일반적으로 Form 개발 시 데이터 저장용 프로시저 호출이 정상 처리 되었을때 사용
AcceptChanges
변경된 첨부 파일 로그의 초기화
내부적으로 커밋 여부를 확인하여, 커밋되지 않은 경우 변경된 첨부 파일 로그를 확인하여 복구
AddAttachmentGridInfo
GridView에 파일 첨부 기능 구현 시 GridView와 GridColumn 정보를 등록
Parameters
GridView gridView: 대상 GridView 개체GridColumn attdatnumColumn: 첨부 번호(attdatnum)를 참조할 GridColumn 개체GridColumn filesColumn: 첨부 번호로 등록된 파일명이 세팅될 컬럼string DBAlias: 파일 정보가 저장된 DB의 별칭 (수동 설정 필요시 사용)string uploadDirectory: 파일 데이터가 저장된 서버의 디렉터리 이름 (수동 설정 필요시 사용)
RemoveAttachmentGridInfo
AddAttachmentGridInfo 메서드를 통해 등록했던 GridView의 정보 제거
Parameters
GridView gridView: 대상 GridView 개체
OpenPreviewPopup
등록되어 있는 첨부 파일을 PDF와 이미지 파일에 한하여 팝업창에서 확인
파일은 PC에 다운로드 되지 않고 메모리에 로드하여 보여주는 방식
Parameters
string DBAlias: 파일 정보가 저장된 DB의 별칭 (수동 설정 필요시 사용)string workType: 미리보기 팝업의 데이터 참조 타입. 기본값 : Default (타입 정보 : Default / ITEM / DWG / ORD_DWG )object referenceKey: 데이터 참조 타입 파라미터에 대한 참조 키 값
※ 데이터 참조 타입별 참조 키
데이터 참조 타입
설명
참조키
"Default"
파일 첨부 번호
(sysAttachments.attdatnum)
"ITEM"
품목관리에 등록된 첨부 파일
(BA030T.itemcd)
"DWG"
도면관리에 등록된 첨부 파일
(DE010T.itemcd + '|' + DE010T.proccd)
"ORD_DWG"
수주처리에 등록된 도면의 첨부파일
(SA110T.ordnum + '|' + SA110T.ordseq)
BindingAttachments
첨부 번호(
string attdatnum)로 데이터를 조회하여 GridControl에 바인딩Parameters
GridControl gridControl: 대상 GridControl 개체string attdatnum: 첨부 번호string DBAlias: 파일 정보가 저장된 DB의 별칭 (수동 설정 필요시 사용)
FileUploadClick
파일 첨부 팝업창을 이용하지 않고 GridControl에 직접 버튼으로 업로드 처리할 경우 사용
Parameters
GridControl gridControl: 대상 GridControl 개체BaseEdit attdatnumControl: 첨부 번호를 참조할 BaseEdit 타입의 개체 (BaseEdit.EditValue 속성의 값을 문자열로 변환하여 첨부 번호로 참조. 값이 null일 경우 실행되지 않음)string DBAlias: 파일 정보가 저장될 DB의 별칭 (수동 설정 필요시 사용)string uploadDirectory: 파일 데이터를 저장할 서버의 디렉터리 이름 (수동 설정 필요시 사용)ref string attdatnum: 첨부 번호를 문자열로 전달 (빈 값 전달 시 새로 생성된 첨부 번호가 할당됨)
FileDownloadClick
파일 첨부 팝업창을 이용하지 않고 GridControl에 직접 버튼으로 다운로드 처리할 경우 사용
Parameters
GridControl gridControl: 대상 GridControl 개체string DBAlias: 파일 정보가 저장된 DB의 별칭 (수동 설정 필요시 사용)string uploadDirectory: 파일 데이터가 저장된 서버의 디렉터리 이름 (수동 설정 필요시 사용)
FileDeleteClick
파일 첨부 팝업창을 이용하지 않고 GridControl에 직접 버튼으로 삭제 처리할 경우 사용
Parameters
GridControl gridControl: 대상 GridControl 개체BaseEdit attdatnumControl: 첨부 번호를 참조할 BaseEdit 타입의 개체 (BaseEdit.EditValue 속성의 값을 문자열로 변환하여 첨부 번호로 참조. 값이 null일 경우 실행되지 않음)string DBAlias: 파일 정보가 저장된 DB의 별칭 (수동 설정 필요시 사용)string uploadDirectory: 파일 데이터가 저장된 서버의 디렉터리 이름 (수동 설정 필요시 사용)
Example
아래 [주의 사항] 반드시 참고
Case 1
파일 첨부 팝업을 사용
데이터 입력 영역 "파일명"을 표현할 ButtonEdit과 "첨부번호"를 받을 TextEdit을 이용하여 구현

Case 2
파일 첨부 팝업을 사용하지 않음
데이터 입력 영역에 GridControl을 배치하고 GroupControl의 CustomHeaderButtons를 이용하여 구현

Case 3
파일 첨부 팝업을 사용
GridControl 에 한 행(Row) 별로 첨부 팝업을 통해 첨부 번호를 관리하는 유형

"파일명"을 바인딩할 GridColumn에 RepositoryItemButtonEditEx 타입의 인스턴스를 등록하고 생성자에서 이벤트 핸들러 추가

OnLoad 메서드에서 AttachmentHelper 에 AddAttachmentGridInfo 메서드를 이용해 GridView 정보를 등록
※ 주의 사항
"조회", "신규", "행 변경으로 인한 데이터 입력 영역 바인딩" 등의 기능이 실행되는 부분에 반드시 AcceptChanges() 메서드를 호출하여 Commit 되지 않은 첨부 로그를 초기화 시켜주도록 한다.
저장 프로시저 메서드에서 신규, 수정으로 정상 저장 되었을 경우 첨부 로그를 Commit
AttachmentHelper.Commit();
데이터가 삭제 되었을 경우 첨부 번호를 반환 받아와 첨부 파일을 삭제 처리
AttachmentHelper.DeleteAttachments(resultSet.ReturnString);
※ "Case 3" 의 경우 첨부 번호를 받아와 삭제 해주는 부분이 불필요. (Commit 메서드는 필요)
Last updated