2014-09-12 8 views
0

작성 후 ZIP 파일을 다운로드하려고 할 때 스크립트에 문제가 있습니다.아파치는 다운로드 대신 ZIP 파일을 읽습니다.

는 어떻게이 ZIP 확장자를 가진 파일을 다운로드 할 수 있도록 아파치 (우분투에서 실행)을 구성하는 zipstream.php 클래스 (https://github.com/maennchen/ZipStream-PHP)

를 사용할 수 있습니까?

감사합니다. 내가 사용하고

코드 :

<?php 
if($_GET['download'] == "ok") 
{ 

$id = $_GET['id']; 

$content = "TEST"; 

$mysql = $db_1->query("select result from testing where id='$id'"); 
$row = mysql_fetch_assoc($mysql); 
$content .= $row['result']; 

$file_opt = array(
    'time' => time() - 2 * 3600, 
    'comment' => 'Simple Comment !', 
); 

$zip = new ZipStream('test.zip', array(
    'comment' => 'Simple Comment !' 
)); 

$zip->add_file('test.txt', $content, $file_opt); 
$zip->finish(); 

exit; 

} 

참고 : 문제는 내가 JQUERY에서 파일을 호출 할 때 자신이 다운로드되지 않습니다,하지만 난 그것을 탐색 할 때 직접 자신이 제대로 다운로드입니다!

+0

당신이 난 그냥 코드 : 그냥 추가 – mariobgr

+0

를 사용하는 코드를 제공;' 와'$ zip-> finish()'이전에 파일의 끝을 보았습니다. – user3818090

답변

2

콘텐츠를 에코하기 전에 Zip 헤더를 설정하는 것을 잊어 버리는 것 같습니다. 당신은 우편 내용을 인쇄하기 전에이 작업을 시도해보십시오

header('Content-Type: application/zip'); 
header('Content-Disposition: attachment; filename="myFileName.zip"'); 

업데이트을 : 당신의 LIB는 우편 헤더를 보낼 수있는 적절한 방법을 갖고있는 것 같다. 대신를 사용해보십시오 :

$zip = new ZipStream('test.zip', array(
    'comment' => 'Simple Comment !', 
    'send_http_headers' => true, 
)); 
+0

'$ 이는 zip> send_http_headers()를 추가 – user3818090

+0

제 잘못입니다. 그냥 좀 더 lib를 읽은 후 답변을 업데이 트했습니다 :) – lsouza

+0

이것은 문제가 해결되지 않았습니다 :) 그는 ZIP 파일을 표시합니다 :) 대신 다운로드하십시오! – user3818090

0

이 작동합니다 :

$filename = "test.zip"; 
header('Content-type: application/zip'); 
header('Content-Disposition: attachment; filename="' . $filename . '"'); 
readfile($filename); 
+0

간단한 PHP가 아니라 zipStream 클래스를 사용하고 있습니다 :) – user3818090

+0

아, 알았어. . :) 나는 처음 읽으면서 그것을 잡지 못했다. –

관련 문제