2009-12-26 4 views

답변

1

해당 파일에 대한 링크 만 제공하면 브라우저가 나머지 작업을 수행합니다. 이 파일이 서버에 저장되어 있다면 외부 세계에 노출되는 스크립트를 찾고있을 것입니다. 이 스크립트는 올바른 MIME 형식을 설정해야하며 readfile이 트릭을 수행해야합니다. 당신이 파일의 MIME 타입을 얻고 싶은 경우에

<?php 
header('Content-type: image/gif'); 
readfile('/path/to.your/file.gif'); 
exit(); 
+0

파일이 .pdf이면 어떻게됩니까? 일반적인 해결책이 있습니까? – user198729

+1

검색 MIME 유형. – deerchao

2

, 당신은 PHP에서, 적어도 두 가지 옵션이 있습니다

:

첫 번째는 (지금은 사용되지 않음) 기능 mime_content_type을 사용하는 것입니다

text/plain 또는 application/octet-stream과 같은 콘텐츠 형식을 MIME 형식으로 반환합니다.


번째 새로운 Fileinfo 확장 사용하는 것 (PHP < 5.3위한 PECL 확장을 가능으로하고, PHP> = 5.3 통합);

파일 이름 인수의 내용의 텍스트 설명을 돌려 에러가 발생하면 FALSE 다음 finfo_file 기능은 당신이 필요합니다 하나가 될 것으로 보인다.

그리고 주어진 예 (인용) :

$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension 
foreach (glob("*") as $filename) { 
    echo finfo_file($finfo, $filename) . "\n"; 
} 
finfo_close($finfo); 

출력의이 종류를 제공합니다 :

text/html 
image/gif 
application/vnd.ms-excel 

당신이 사용해야합니다 무엇을 어떤 대응의 종류 Content-type 응용 프로그램이 보내야 할 HTTP 헤더;

+0

많은 동시 사용자가있는 경우 MIME 마술 패턴 테스트가 "가장 저렴한"함수가 아니기 때문에 어떻게 든 결과를 캐싱하는 것이 좋습니다. – VolkerK

+0

finfo_open 마법 데이터베이스 php를로드하지 못했습니다. – user198729

+0

글쎄, 어떤 종류가 있습니다. 당신이 올바른 장소에 놓아야하는 "마법 데이터베이스"(몇 번 시도했지만 설정하기가 쉽지는 않지만 ** 어려운 것도 있음) ;; http://www.php.net/manual/en/function.finfo-open.php에 몇 가지 정보가 있습니다.이 정보는 조금 더 먼 길로 인도 할 수 있습니다. –

관련 문제