[API] JFile

BBANG-JUN·2020년 8월 27일
0

API

목록 보기
3/4
post-thumbnail

Controller에서는 업로드 시 동작

======================

Controller-1.파일 읽기 /readFileId.do 

======================

                ▽

======================

(파일 개수만큼 반복)

Controller-2.파일 업로드 /processUpload.do

======================

                ▽

============================

Controller-3.업로드 완료 /afterProcessUploadCompleted.do

============================

                ▽

============================

Controller-5.파일 ID로 첨부파일 목록 읽기 /readDownloadFiles.do

============================

JSP에서는 <jwork:fileuploader의 태그를 이용해 UI를 구성하게 된다.

<jwork:fileuploader

     // 해당 두 개는 현재 jsp에서 사용할 임시 이름이다.

	objectId="fileUploadObj1"

	uploadCompletedEvent="uploadCompleted1"



    // 화면을 그릴때 options 있다면 적용된다 

	fileType="all"

	maxFileSize="10000"

	maxFileCount="30"

	usePreview="true"

	useSecurity="false"

	uploadMode="db"

/>

시작은 fileUploadObj1.startUpload();

업로드가 마치면, fileUploadObj1.refresh();가 작동한다.

  • startUpload()는 전송(업로드를 한다.)을 누르기 까지의 과정이다.

  • refresh()은 업로드 한 파일리스트를 바로 불러와 다운로드와 삭제 기능을 하게 해준다.

startUpload()는 jwork.fileUpload.js에 속한다.

업로드 링크를 누를 경우, 화면을 구성하는 jwork.fileUpload()의 함수들이 실행된다.

 <jwork>

   initProperties(ctx) : ctx루트명으로 값을 초기화한다.

   ▽

   setOptions(options) : 옵션들이 있다면 맞게 초기화 시켜준다.

   ▽

   initHtml() : 화면을 구성해준다. @RequestMapping("/jfile/jfileuploadForm.do")

   ▽

 <Swf>

   initSwf() : Swf 초기화 및 셋팅을 한다. (adobe flash player)

   ▽

   getSettings() : SwfUpload가 요구하는 options 값들을 반환시켜준다.

   ▽

   getFileTypeForSwfUpload() : File 타입 값 반환

   ▽

   getFileTypeDescForSwfUpload() : File 타입 값에 대한 설명 반환     

다음과 같이 화면을 그린 후 파일을 그리는 함수가 실행된다.
appendFileRow() : 파일 추가시 컴포넌트 화면에 Html로 그려진다.

다음은 전송을 누를 경우 업로드에 해당되는 함수들이 실행된다.

  • StartUpload() (1)
  • StartUpload() (2)
  • beforeUpload()

@RequestMapping("/jfile/readFileId.do")

  1. fileId~uploadPathKey의 데이터들을 전달한다.

  2. service.getFileId(fileVO.getFileId(),request.getParameterValues("fileSeq")); // "" , null

  3. fileId는 ""로 전달되며 Service에서 seq형태로 생성시켜준다.

    • seq형태는 Impl의 경로를 따라가면 알 수 있다.
  4. fileId가 null이거나 ""이면 seq형태로 생성, 존재한다면 seq들은 모두 처음 fileId형태를 따라간다.

  5. 만들어진 fileId는 StartUpload의 this.fileId에 대입된다.
    filedId와 이하 변수들은 this.swfu.addPostParam("이름", this.값); 으로 들어간다.

ex)
@@@@@@ startUpload @@@@@@@
fileId : 173b85c25c16
beanId : null
uploadPathKey :
useSecurity :
uploadMode : db

다음과 같은 예시로 들어가게 된다.
이제 startUpload()가 실행된다.

swfu.startUpload()

swfu는 flash player로 자동으로 file에 대한 정보들을 가져오는 것으로 생각된다.
jwork에서는 handler를 통해 swfu에 있는 메서드를 이용하여 다루고 있다.

실행순서)

swfu.queue : [업로드 시작 -> 업로드 상태 -> 업로드 성공 -> 업로드 완료]

다루는 객체 file

ex)

file : {
    "id":"SWFUpload_0_0",
    "type":".jpg",
    "uploadtype":0,
    "size":27607,
    "index":0,
    "name":"dog1.jpg",
    "post":{},
    "creationdate":{},
    "filestatus":-2,
    "modificationdate":{}
    }

업로드할 파일이 더이상 존재하지 않다면

[ 업로드 마침 ]이 실행된다.

업로드 마침

@RequestMapping("/jfile/afterProcessUploadCompleted.do")
마친 후 다운로드 및 삭제 아이콘에 대한 impl 기능들이 되게 해준다.

refresh()

초기 화면 구성과 동일하며,
if( fileId 가 존재할 경우 )

getFileList()로 서버에 저장되어 있는 파일 리스트를 가져온다.

 fileId : 173b85c25c16
 beanId : null
 uploadPathKey : 
 useSecurity : 
 uploadMode : db

해당 정보들을 body에 담아 전송하여,
@RequestMapping("/jfile/readDownloadFiles.do")
해당 경로로 요청하여, fileList를 받아온다.

fileList의 형태는 service.getAttachFiles( "파일 아이디" ) 로 받아 올 수 있는데,
SQL문에 받아 온 fileId를 조건식에 넣어 동일 데이터를 가져오는 방식이었다.

받아 온 fileList는 fileUpload.insertFileList(result.filelist); 로 넘겨지게 되며, appendFileRow()로 파일들을 그려주게 된다.

이곳에서는 fileSeqList에 [1] = seq1, [2] = seq2 .... 이렇게 저장되고 있는데

remove처리를 위해 시퀀스를 임시 저장하고 있는 것을 알 수 있었다.

profile
🔥 머릿속으로 생각하지만 말고, 행동으로 보여줘

0개의 댓글