2012-08-07 4 views
0

여기 내 문제가 있습니다. 헤더를 사용하여 파일을 다운로드하려고합니다. 여기 내 코드입니다 :PHP Force 다운로드가 작동하지 않습니다.

$content_type = mime_content_type('uploads/MyBBIntegrator_v1.3.1.zip'); 
$file = 'uploads/MyBBIntegrator_v1.3.1.zip'; 
header("Cache-Control: public"); 
header('Content-type: application/octet-stream'); 
header("Content-Description: File Transfer"); 
header('Content-Disposition: attachment; filename="MyBBIntegrator_v1.3.1.zip'); 
header("Content-Transfer-Encoding: binary"); 
header('Expires: 0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
readfile('uploads/MyBBIntegrator_v1.3.1.zip'); 

그러나이의 유일한 결과가 페이지 파일의 내용 (이 텍스트 파일) 또는 이상한 기호 문자열을 표시한다는 것입니다 파일 인 경우 이미지/우편/exe 등

이 문제를 해결하려면 어떻게해야합니까?

+1

Content-Length 헤더를 제거하고 시도하십시오 .. –

+0

저에게 맞나요? 어떤 브라우저? –

+0

처음에는 불필요하거나 정의되지 않은 모든 응답 헤더 필드 (Content-Description, Content-Transfer-Encoding, Cache-Control : public ...)를 제거하십시오. –

답변

1

우선 mime_content_type()은 더 이상 사용되지 않으므로 MIME 값을 가져 오는 또 다른 방법을 시도해야합니다.

코드를 검사했는데 내 서버에서 제대로 작동하므로 제대로 작동합니다. 다운로드를 차단할 수있는 INI 지시문을 확인해야합니다. 새로운 설치 서버를 사용해보십시오.

또한 질문에 넣은 스 니펫 이전에 스크립트에서 생성 된 결과가 없어야합니다.

관련 문제