2013-07-02 33 views
-2

您好,我正在使用下面的代碼下載以從服務器檢索.zip文件,但是我獲取了該文件,但是我試圖將其解壓縮到同一個php文件中的一個文件夾中,但是當我運行我的腳本在下載的文件,那麼這是輸出我得到:如何使用php提取.zip文件

這是輸出我得到:

File Opening Successful 

Warning: ZipArchive::extractTo() [ziparchive.extractto]: Invalid or unitialized Zip object in /home/content/38/10376438/html/viptravelink/xml/xml3.php on line 48 

Warning: ZipArchive::close() [ziparchive.close]: Invalid or unitialized Zip object in /home/content/38/10376438/html/viptravelink/xml/xml3.php on line 49 
Uncompression Successful 

這是我使用的腳本:

<?php 
     /* 
     * XML Sender/Client. 
     */ 
     $xmlRequest = '<?xml version="1.0" encoding="utf-8"?> 
        <Request> <Source><RequestorID Client="***" EMailAddress="[email protected]***.com" Password="***" /> <RequestorPreferences Language="en" Currency="USD">   <RequestMode>SYNCHRONOUS</RequestMode> </RequestorPreferences> </Source> <RequestDetails>  <ItemInformationDownloadRequest ItemType="hotel"> 
    <IncrementalDownloads> 
       </IncrementalDownloads> 
      </ItemInformationDownloadRequest> </RequestDetails></Request>'; 

     // We send XML via CURL using POST with a http header of text/xml. 

    $url = 'https://interface.demo.gta-travel.com/rbsusapi/RequestListenerServlet'; 
    $ch = curl_init(); 
    $zipPath = '/home/content/38/10376438/html/viptravelink/xml/' .date('m-d-Y_h-i-s'). '.zip'; 
    $out = fopen($zipPath, 'wb'); 
    echo "File Opening Successful<br>"; 
    if ($out == FALSE){ 
    echo "Download Failed<br>"; 
    exit; 
    } 
     curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_SSLVERSION, 3); // Force SSLv3 to fix Unknown SSL Protocol error 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); 
    curl_setopt($ch, CURLOPT_FILE, $out); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$xmlRequest); 
    curl_setopt($ch,CURLOPT_ENCODING , "gzip"); 
    curl_setopt($ch,CURLOPT_AUTOREFERER , 1); 
    curl_setopt($ch,CURLOPT_MAXREDIRS , 10); 


    curl_setopt($ch, CURLOPT_HEADER, 1); 

    $result=curl_exec($ch); 

    $httpCode = curl_getinfo($ch); 

    curl_close($ch); 
    fclose($out); 

    $zip = new ZipArchive; 
    if (!$zip) { 
      echo "Could not make ZipArchive object.<br>"; 
      exit; 
    } 
    $zip->open('$zipPath'); 
    $zip->extractTo('/home/content/38/10376438/html/viptravelink/xml/content/'); 
    $zip->close(); 
     echo "Uncompression Successful<br>"; 

    ?> 

任何幫助將大大的應用程序reciated!

謝謝!

回答

0

您的zip->open('$zipPath'); $ zipPath變量未初始化,並且您在單引號內包含不會展開變量put的變量會將文字值作爲文件名。另外你的設置CURLOPT_HEADER爲1,這將使輸出包含標題以及導致文件無效。解決這個問題。設置CURLOPT_HEADER爲0,並設置zip->open($zipPath);

+0

謝謝你們的迴應,我改你告訴我,文件下載,但它沒有解壓,這是輸出: '文件打開成功 警告:ZipArchive :: open()期望參數1爲字符串,資源在/ home/content/38/10376438/html/viptravelink/xml/xml3.php 47行上 警告:ZipArchive :: extractTo()[ziparchive.extractto]:警告:ZipArchive :: close()[ziparchive.close]:/ html/viptravelink/xml/xml3中的Zip對象無效或單元化。無效的或單元化的ZIP對象位於/html/viptravelink/xml/xml3.php 48行上 php 49行 解壓成功' – enriqg9

+0

我犯了一個小錯誤,你可以設置'$ zip-> open($ zipPath);'你應該沒問題。 – DevZer0

+0

它的工作!非常感謝 :) – enriqg9