CSV MIME 유형을 사용하는 방법은 무엇입니까?


125

작업중 인 웹 응용 프로그램에서 사용자는 CSV 파일에 대한 링크를 클릭 할 수 있습니다. MIME 유형에 대한 헤더 세트가 없으므로 브라우저는 단지 텍스트로 렌더링합니다. 이 파일을 .csv 파일로 보내려면 사용자가 calc, excel, gnumeric 등으로 직접 열 수 있습니다.

header('Content-Type: text/csv');
echo "cell 1, cell 2";

이 코드는 내 컴퓨터에서 예상대로 작동하지만 (항상 그렇지 않습니까?) 다른 컴퓨터에서는 작동하지 않습니다.

내 브라우저는 FF 3.0.1 (Linux)의 야간 빌드입니다. 작동하지 않는 브라우저는 IE 7 및 FF 3.0 (Windows)이었습니다.

내가 모르는 문제가 있습니까?

답변:


219

다음과 같은 방법으로 브라우저가 "다른 이름으로 저장 ..."대화 상자를 열도록 할 수 있습니다.

header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";

대부분의 주요 브라우저에서 작동합니다.


12

언어 나 프레임 워크를 지정하지 않았지만 파일 다운로드에 다음 헤더가 사용됩니다.

"Content-Disposition: attachment; filename=abc.csv"

5

Internet Explorer를 사용하면 다운로드가 제대로 작동하도록 Pragma : 공개 헤더를 지정해야하는 경우가 종종 있습니다.

header('Pragma: public');

내 2 센트 만 ..


5
Pragma : public은 Internet Explorer에 의미가 없습니다. (문제의 구성 요소를 작업했으며 소스를 가져 왔습니다.)
EricLaw

아마도 이것의 실제 유틸리티는 기존 Pragma : no-cache header?를 대체하는 것입니다.
Doin

2

이 코드는 CSV를 포함한 모든 파일을 내보내는 데 사용할 수 있습니다

// application/octet-stream tells the browser not to try to interpret the file
header('Content-type: application/octet-stream');
header('Content-Length: ' . filesize($data));
header('Content-Disposition: attachment; filename="export.csv"');

2
"옥텟 스트림"은 "옥텟 스트림"을 의미합니다
EricLaw

2
이것은 일부 브라우저에 경고가 발생할 수 있습니다 리소스 문서로 해석하지만, MIME 형식 application / octet-stream으로 전송
mikeschuld
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.