2012-07-08 3 views
2

사용하여 파일 및 폴더 작업.우리는 같은 일부 HTML 코드를 우편

PHP에서 처음으로 zip으로 작업 할 때 몇 가지 질문이 있습니다.

은 어떻게 I :

  1. HTML라는 이름의 폴더를 생성하고 index.html을 만들

  2. (단지 변수에, FTP에 진짜 창조) $contents 내부에 배치하고 내부에 배치 HTML 안에있는 폴더 $contents

    그래서 zip sh before $contents 울드가 포함되어

    /HTML/index.html (with <body>Some text</body> code inside) 
    
  3. $contents 변수 내부의 모든 컨텐츠 우편 아카이브를 만들 수 있습니다.

    $contents = '/tmp/HTML'; 
    // Make the directory 
    mkdir($contents); 
    // Write the html 
    file_put_contents("$contents/index.html", $html); 
    // Zip it up 
    $return_value = -1; 
    $output = array(); 
    exec("zip -r contents.zip $contents 2>&1", $output, $return_value); 
    if ($return_value === 0){ 
        // No errors 
        // You now have contents.zip to play with 
    } else { 
        echo "Errors!"; 
        print_r($output); 
    } 
    

    내가 그냥 명령 줄을 압축하는 라이브러리를 사용하지 않는,하지만 당신이 원한다면 당신이 라이브러리를 사용할 수 있습니다 (하지만 난 확인하고 : 내가 제대로 이해하면

답변

1

zip이 올바르게 실행되었는지 확인하십시오. 당신이 정말로 진정으로 메모리에 모든 것을하려면


, 당신은이 작업을 수행 할 수 있습니다

$zip = new ZipArchive; 
if ($zip->open('contents.zip') === TRUE) { 
    $zip->addFromString('contents/index.html', $html); 
    $zip->close(); 
    echo 'ok'; 
} else { 
    echo 'failed'; 
} 

http://www.php.net/manual/en/ziparchive.addfromstring.php

+0

에서 mkdir 같은 폴더를 생성하고, file_put_contents를 내가하고 싶지 않아 무엇을, FTP에 파일을 생성있을 수 있습니다. 아이디어는 가변 안에 폴더와 파일을 만들고 그 결과로 압축하는 것입니다. 진정한 창조가 아니라 모든 행동이 기억 속에 있어야합니다. 어쨌든 감사합니다. – James

+0

'/ tmp'로 모든 것을하면,/tmp는 RAM (즉, 메모리)에 마운트 된 파일 시스템이기 때문에 기술적으로 요구 사항을 만족시킬 것입니다. 그러나, PHP의 메모리에서 전체를 수행하는 방법에 대해서는 제 편집을 참조하십시오. – Jay

0

은 내가 ZipArchive 클래스를 사용하는 것이 좋습니다 것입니다. 그래서 당신은이

$html = '<body>some HTML</body>'; 
$contents = new ZipArchive(); 
if($contents->open('html.zip', ZipArchive::CREATE)){ 
    $contents->addEmptyDir('HTML'); 
    $contents->addFromString('index.html', $html); 
    $contents->close() 
} 
관련 문제