1. 에디터에서 document_srl 불러옴(수정이면 기존 document_srl, 새로운 게시물이면 새로운 번호 부여)

 

2. 파일을 &act=procFileUpload로 전송

 

3. 파일 결과를 JSON으로 받음

 

 

XE로 에디터 파일첨부 만드는건 처음이라서 그런지 복잡하네요 @_@

  • profile
    일반적인 경우(에디터와 함께 사용)의 경우면,

    1. 에디터를 띄울때 editor_sequence값이 생깁니다. 이 값은 세션에 저장되며, 에디터가 한번 뜰때마다 1씩 증가합니다.

    2. $_SESSION['upload_info'][$editor_sequence](이하 에디터 세션변수)에 파일 업로드 활성화 여부나, 글 수정이라면 글번호도 저장합니다.

    3. 파일 업로드시 editor_sequence와 upload_target_srl(글 수정시 글번호 포함됨)을 procFileUpload로 같이 보냅니다.

    3-1. 만일 파일 업로드가 비활성화되어 있다면 procFileUpload에서 진행되지 않습니다.

    4. upload_target_srl이 있다면 사용해서 업로드 및 file s 테이블에 저장하고, 없다면 에디터 세션변수에서 uplaod_target_srl값이 있는지 체크해서 사용합니다. 그래도 없다면(즉, 새로 글쓰기) getNextSequence 함수로 새 글번호를 발급받습니다.

    5. 이후 editor_sequence를 이용해 파일 목록을 갱신합니다. 갱신하면서 upload_target_srl도 받아와서 변경합니다. 이후 document_srl(보통 글쓰기라면 에디터 primary key로 document_srl을 지정합니다) 도 upload_target_srl로 변경해서 첨부파일이 새로 쓰는 글에 잘 붙을수 있도록 해줍니다.(즉 파일을 업로드한 순간 이미 글을 쓴 셈이 됩니다)

    5번 절차를 제대로 하지 않으면 파일은 파일대로 존재하지 않는 글에 업로드된게 되고, 글은 글대로 첨부파일이 존재하지 않게 됩니다.
  • profile
    https://github.com/xpressengine/xe-core/pull/1758 이 PR을 적용한 이후라면 procFileUpload에서 파일 정보(파일 번호, 다운로드 주소 등등)을 반환하므로(현재 코어에서는 아무것도 반환하지 않습니다) 이를 이용할 수 있게 됩니다.
  • profile profile

    감사합니다! :0

    생각보다 복잡한 구조네요

  • profile profile
    현재는 HTML5 기반 업로더지만 예전 플래시 기반 업로더를 쓸때는 procFileUpload 업로드 이후 반환값을 제대로 사용하기 힘들었기에 이런 편법을 쓴 것으로 보입니다.

    즉 업로더가 바뀐 현재는 필요없는 방식이죠.