2016-06-08 3 views
2

포장을 풀 때 tar 아카이브가 손상되어 포장을 풀 때 날이 오류를 제공합니다 "The tar archive is corrupt" 아카이브가 2GB 이하 크다. 아카이브의 크기가 2GB보다 작 으면 모든 것이 잘 작동합니다.내가 <code>php</code> (및 <code>ajax</code>)를 사용하여 <code>tar</code> 아카이브를 만들려고 해요

function download_files() { 
    set_time_limit(0); 

    ob_start(); 
    $filename = "download.tar"; 
    $path = "temp/$filename"; 

    $files = ''; 
    foreach($_GET['dfile'] as $file){ 
     $files .= "$file "; 
    } 

    $cd_dir = FCPATH.'uploads'; 
    system("cd $cd_dir && tar -cf $path $files"); 

    header("Content-Transfer-Encoding: Binary"); 
    header("Content-Length: ".filesize(FCPATH."uploads/$path")); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename="'.$filename.'"'); 

    ob_end_flush(); 
    readfile(FCPATH."uploads/$path"); 
    unlink(FCPATH."uploads/$path"); 
} 

내가 ob_* 기능을 제거하려하고 쓸모가 없었습니다 :

여기 내 코드입니다.

도움주세요 :) 미리 감사드립니다.

+0

'타르 -cf $ 경로 $ 파일 "을 시도하려고 헤더에 문제가 보인다 '...이 시스템 문제가 될 것으로 보인다 –

+0

_ "ob_ * 함수를 제거하려고 시도했지만 쓸모가 없었습니다."- 실제 출력이없고 헤더 만 설정된 경우 출력 버퍼링이 필요 없으며 단지 불필요합니다./그 문제에 관해서는, 그 중 하나를 시도하고 열어 보았습니까? rupt> 2GB 파일을 텍스트 또는 16 진수 편집기에서 검사하여 (PHP 또는 명령 줄 tar 호출에서) 오류 메시지가 포함되어 있는지 확인하십시오. – CBroe

+0

나는 그것을 시도하고 오류 메시지가 없습니다 – mihaela

답변

0

그것은 당신이

header("Content-Type: application/x-gzip-compressed"); 
header("Content-Disposition: attachment; filename=$filename"); 

function downloadTar($filename, $path) 
{ 
    $path_file = $path."/".$filename ; 
    if(file_exists($path_file)) 
    { 
     header("Content-Type: application/x-gzip-compressed"); 
     header("Content-Disposition: attachment; filename=$filename"); 
     ob_clean(); 
     flush(); 
     readfile("$path_file"); 
     exit; 
    } 

} 
+0

나는 그것을 시도, 작동하지 않습니다 – mihaela

+0

기능을 시도하십시오 – fKnight

+0

나는 같은 오류가 발생합니다 : ( – mihaela