지난번 header를 이용하여 PHP파일 다운로드를 구현했다.
분명 잘되는줄 알았으나, txt 파일을 제외한 '모든 형식들이 지원하지 않는다.'라며 제대로 구현이 되지 않았다. 몇시간동안이나 검색하며 찾아봤으나 이유나 해결법을 찾지못했다.
그래서 우선은 header에 대해 공부하기로 했다.
***Content-Type
1 2 3 4 5 6 7 8 9 10 11 | <?php header("Content-Type: application/force-download"); header("Content-type: application/x-msdownload"); header("Content-Type: application/octet-stream"); header('Content-Type: application/x-octetstream'); header('Content-Type: application/pdf'); header("Content-Type: file/unknown"); header("Content-Type: image/png"); ?> | cs |
request에 실어 보내는 body 데이터의 type 정보(어떻게 문서가 파싱해야하는지)
리소스의 media type을 나타내기 위해 사용.
Type/subtype의 형태로 작성
- application/octet-stream
: 이진 파일(컴퓨터 저장과 처리 목적을 위해 이진 형식으로 인코딩된 데이터를 포함)을 위한 기본값.
Content-Disposition 헤더가 필요한 듯
<문자>
- text/plain
: 텍스트 파일에 대한 기본값. 모든 종류의 텍스트 데이터를 의미하지는 않는다.
- text/css
- text/html
<이미지>
- image/gif
- image/jpeg
- image/png
등이 존재. 뒤에 charset=utf-8를 붙이기도 한다.
***Content-Disposition
1 2 3 4 5 | <?php header("Content-Disposition: attachment; filename=".$name_org.""); //한글 깨짐 방지 header("Content-Disposition: attachment; filename=".iconv('UTF-8', 'CP949', $name_org)); ?> | cs |
컨텐트 타입의 옵션이며, 실제로 지정된 파일명을 지정함으로서 더 자세한 파일의 속성을 알려준다.
- Content-disposition:attachment
: 브라우저 인식 파일확장자를 포함하여 모든 확장자의 파일들에 대해, 다운로드 시 무조건 파일 다운로드 대화상자가 뜨도록 하는 헤드 속성.
- Content-disposition:inline
: 브라우저 인식 파일확장자를 가진 파일들에 대해서는 웹브라우저에서 바로 파일을 열고, 그 외는 파일다운로드 대화상자가 뜨도 록 하는 헤드 속성
***Content-Transfer-Encoding
1 2 3 | <?php header("Content-Transfer-Encoding: binary"); ?> | cs |
Transfer-Encoding 헤더는 사용자에게 entity를 안전하게 전송하기 위해 사용하는 인코딩 형식을 지정.
***Content-Length
1 2 3 4 5 6 | <?php $fileDir = "/usr/local/apache/htdocs/uploads"; $size = filesize($fileDir); header("Content-Length: ".$size); ?> | cs |
요청 또는 응답 본문에 있는 데이터 바이트 수(그냥 업로드한 파일 크기)
pragma랑 expires랑 여러개 남긴했는데 찾아봐도 잘모르는 내용이다. 우선은 이렇게만하고 오류 수정해야겠다.
'PHP' 카테고리의 다른 글
파일다운로드 - 오류 수정 (0) | 2018.11.22 |
---|---|
파일 다운로드 (0) | 2018.11.20 |
파일 업로드 (0) | 2018.11.20 |
rownum 사용 (0) | 2018.11.19 |
form과 post 방식 (0) | 2018.11.17 |