콘텐츠로 이동

CONTENT_DISPOSITION_FILENAME

목적

HTTP Response 에서 Content-Disposition 헤더를 이용해 파일 전송 시, 특수문자로 인한 오류를 방지하기 위해 파일명을 안전하게 변환


주요 단계

1. File Name Escape 처리 예제

  • HTTP Response 에서 특수문자 처리 방식이 아닌 파일명을 변환하는 방식을 확인
  • 특수 문자 및 공백이 포함된 파일을 업로드 후, CONTENT_DISPOSITION_FILENAME을 수행하여 Escape 처리 전후의 파일명을 비교

1.1 File Uploader UI 생성 및 “uploadComplete” Event 생성

이미지

<사진 1> File Uploader, Escape 처리, 미처리 파일명 표시 UI 구성 화면


1.2 Method : EV_UPLOAD Source Code

METHOD EV_UPLOAD.

  DATA : LV_FNAME TYPE STRING.

*--------------------------------------------------------------------*

  "-* Upload File Information.
  READ TABLE IT_FILES INTO DATA(LS_FILES) INDEX 1.

  CHECK SY-SUBRC EQ 0.

  CALL METHOD /U4A/CL_UTILITIES=>CONTENT_DISPOSITION_FILENAME
    EXPORTING
      USER_AGENT_TYPE    = 2
      USER_AGENT_VERSION = 0
      FILE               = LS_FILES-FNAME
    RECEIVING
      FILENAME           = LV_FNAME.
  " Content Disposition, File Name*=utf-8''file.txt.

  "-* Escape unprocessed filename.
  CONCATENATE 'filename="' LS_FILES-FNAME '"' INTO GS_MAIN-FNAME1.

  "-* Escape processed filename.
  GS_MAIN-FNAME2 = LV_FNAME.

ENDMETHOD.

2. Application 실행 및 테스트

2.1 Application 을 실행 후 파일 업로드 버튼을 선택

이미지

<사진 2> Application 초기 실행 화면 및 파일 업로드 버튼 선택


2.2 특수문자 및 공백이 포함된 파일을 업로드

이미지

<사진 3> 특수 문자 및 공백이 포함된 파일 업로드 화면


2.3 Escape 처리 완료된 파일명과 미처리된 파일명을 비교

이미지

<사진 4> 파일 업로드 완료 후 Escape 처리된 파일명 & 원본 파일명 비교