CREATE TABLE J_ATTACHFILE ( FILE_ID VARCHAR2(13) NOT NULL, FILE_SEQ INTEGER NOT NULL, FILE_NAME VARCHAR2(100) NOT NULL, FILE_SIZE INTEGER, FILE_MASK VARCHAR2(100), DOWNLOAD_COUNT INTEGER, DOWNLOAD_EXPIRE_DATE VARCHAR2(8), DOWNLOAD_LIMIT_COUNT INTEGER, REG_DATE DATE, DELETE_YN VARCHAR2(1), CONSTRAINT J_ATTACHFILE_PK PRIMARY KEY (FILE_ID, FILE_SEQ) );
CREATE TABLE J_ATTACHFILE ( FILE_ID VARCHAR(13) NOT NULL, FILE_SEQ INTEGER NOT NULL, FILE_NAME VARCHAR(100) NOT NULL, FILE_SIZE INTEGER, FILE_MASK VARCHAR(100), DOWNLOAD_COUNT INTEGER, DOWNLOAD_EXPIRE_DATE VARCHAR(8), DOWNLOAD_LIMIT_COUNT INTEGER, REG_DATE DATETIME, DELETE_YN VARCHAR(1), CONSTRAINT J_ATTACHFILE_PK PRIMARY KEY (FILE_ID, FILE_SEQ) );
CREATE TABLE J_ATTACHFILE ( FILE_ID VARCHAR(13) NOT NULL, FILE_SEQ INT NOT NULL, FILE_NAME VARCHAR(100) NOT NULL, FILE_SIZE INT, FILE_MASK VARCHAR(100), DOWNLOAD_COUNT INT, DOWNLOAD_EXPIRE_DATE VARCHAR(8), DOWNLOAD_LIMIT_COUNT INT, REG_DATE DATETIME, DELETE_YN VARCHAR(1), PRIMARY KEY (FILE_ID, FILE_SEQ) ); CREATE UNIQUE INDEX J_ATTACHFILE_PK ON J_ATTACHFILE ( FILE_ID, FILE_SEQ );
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0"/>
아래의 내용은 JFile V1.0 버전에서 제공하는 JFileService API 목록이다.
/* * 파일을 업로드 한다. * @param fileId 파일 아이디. * @param multipartFile 멀티파트 파일. * @param uploadPath 업로드 경로. * @param fileSeqs 파일 시퀀스 목록. */ public void upload(String fileId, MultipartFile multipartFile, String uploadPath, Object[] fileSeqs) ; /* * 파일을 업로드 한다. * @param fileId 파일 아이디. * @param multipartFile 멀티파트 파일. * @param uploadPath 업로드 경로. */ public void upload(String fileId, MultipartFile multipartFile, String uploadPath) ; /* * 파일을 업로드 한다. * @param fileId 파일아이디. * @param multipartFile 멀티파트 파일. * @param fileSeqs 파일 시퀀스 목록. */ public void upload(String fileId, MultipartFile multipartFile, Object[] fileSeqs) ; /* * 파일을 업로드 한다. * @param fileId 파일아이디. * @param multipartFile 멀티파트 파일. */ public void upload(String fileId, MultipartFile multipartFile) ; /* * 파일을 업로드 한다. * @param fileId 파일 아이디. * @param multipartFiles 멀티파트 파일. * @param uploadPath 업로드 경로. * @param fileSeqs 파일 시퀀스 목록. */ public void upload(String fileId, Collection<MultipartFile> multipartFiles, String uploadPath, Object[] fileSeqs) ; /* * 파일을 업로드 한다. * @param fileId 파일 아이디. * @param multipartFiles 멀티파트 파일. * @param uploadPath 업로드 경로. */ public void upload(String fileId, Collection<MultipartFile> multipartFiles, String uploadPath) ; /* * 파일을 업로드 한다. * @param fileId 파일 아이디. * @param multipartFiles 멀티파트 파일. * @param fileSeqs 파일 시퀀스 목록. */ public void upload(String fileId, Collection<MultipartFile> multipartFiles, Object[] fileSeqs) ; /* * 파일을 업로드 한다. * @param fileId 파일 아이디. * @param multipartFiles 멀티파트 파일. */ public void upload(String fileId, Collection<MultipartFile>) ; /* * 파일을 업로드 한다. * @param multipartFile 멀티파트 파일. * @param uploadPath 업로드 경로. */ public void upload(MultipartFile multipartFile, String uploadPath) ; /* * 파일을 업로드 한다. * @param multipartFile 멀티파트 파일. */ public void upload(MultipartFile multipartFile) ; /* * 파일을 업로드 한다. * @param multipartFiles 멀티파트 파일. * @param uploadPath 업로드 경로. */ public void upload(Collection<MultipartFile> multipartFiles, String uploadPath) ; /* * 파일을 업로드 한다. * @param multipartFiles 멀티파트 파일. */ public void upload(Collection<MultipartFile> multipartFiles) ; /* * 파일 아이디를 조회한다. * @param fileId 파일아이디. * @param fileSeqs 파일 시퀀스 목록. * @return String 파일 아이디. */ public String getFileId(String fileId, Object[] fileSeqs); /* * 파일 아이디를 조회한다. * @param fileId 파일아이디. * @return String 파일 아이디. */ public String getFileId(String fileId); /* * 파일 아이디를 조회한다. * @return String 파일 아이디. */ public String getFileId(); /* * 파일업로드가 완료된 후 처리 작업을 수행한다. * @param fileId 파일아이디. * @param uploadPath 업로드 경로. */ public void executeAfterUploadCompleted(String fileId, String uploadPath); /* * 파일업로드가 완료된 후 처리 작업을 수행한다. * @param fileId 파일아이디. */ public void executeAfterUploadCompleted(String fileId); /* * 첨부파일 객체. * @param filePullPath 디렉터리를 포함한 전체 경로. * @return File 파일 객체. */ public File getFile(String filePullPath); /* * 첨부파일 객체. * @param fileId 파일 아이디. * @return File 파일 객체. */ public File getFileBySequence(String fileId); /* * 첨부파일 객체. * @param fileId 파일 아이디. * @param fileSeq 파일 시퀀스 목록. * @return File 파일 객체. */ public File getFileBySequence(String fileId); /* * 첨부파일 객체. * @param fileId 파일 아이디. * @param fileSeq 파일 시퀀스 목록. * @param filePath 파일 경로. * @return File 파일 객체. */ public File getFileBySequence(String fileId, String fileSeq, String filePath); /* * JFile 객체. * @param fileId 파일 아이디. * @return JFile[] 암호화 정보 및 마스킹 파일명을 포함하고 있는 파일 객체. */ public JFile[] getFiles(String fileId); /* * JFile 객체. * @param fileId 파일 아이디. * @param uploadPath 파일 경로 * @return JFile[] 암호화 정보 및 마스킹 파일명을 포함하고 있는 파일 객체. */ public JFile[] getFiles(String fileId, String uploadPath);
① <jwork:fileuploader ② objectId="fileUploadObj1" ③ uploadCompletedEvent="uploadCompleted1" ④ beanId="jfileService" ⑤ fileType="image" ⑥ maxFileSize="100" ⑦ maxFileCount="30" ⑧ usePreview="true" ⑨ useSecurity="false" ⑩ uploadMode="db" />
<script> // 전송 버튼 클릭 시 function send1(){ fileUploadObj1.startUpload(); } // 태그라이브러리 에서 등록한 업로드 완료 이벤트 함수 명 function uploadCompleted1(){ fileUploadObj1.refresh(); } </script>
아래의 경우와 같이 고객사에서 요구하는 상황이 발생 했을시 개발자는 클래스 수정 없이 xml 설정 파일[context-jfile.xml]정보와 Jsp파일의 태그라이브러리에서 beanId 값의 변경 만으로 아래의 상황을 처리 할 수 있다.
① <aop:aspectj-autoproxy proxy-target-class="false" / > ② <bean class="egovframework.com.ext.jfile.aspect.MultipartResolverDisablingAspect" /> ③ <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> ④ <bean id="download" class="egovframework.com.ext.jfile.view.DownloadView" /> ⑤ <bean id="jsonView" class="egovframework.com.ext.jfile.view.JSonView" /> ⑥ <bean id="cipherService" class="egovframework.com.ext.jfile.security.service.CipherServiceImpl" > <property name="jcrypto" > <bean class="egovframework.com.ext.jfile.security.GenericJCrypto"/ > </property > </bean>
①, ② 번은 멀티플 파일 업로드시 동일한 이름의 여러개 파일을 올리는 것을 지원하도록 해주는 방법이다. ③ 번은 Spring 에서 지원하는 멀티파트 리졸버 이다.
④ 번은 파일 다운로드를 처리하는 View 이다.
⑤ 번은 JSONObject 형태의 데이타를 주고 받을 때 사용되는 view 이다.
⑥ 번은 파일 암호화를 지원하기 위한 서비스이다. JFile 태그라이브러리에서 useSecurity='true' 일 때만 동작한다.