我使用Zend HttpClient的下載zip文件,並獲得分配給一個變量爲這樣的文件的內容:可以打開下載的壓縮文件,而不必先將它保存爲文件?
$body = $response->getBody();
$body
有一個zip文件的內容,可以將其打開不保存它作爲一個文件第一,使用http://php.net/manual/en/class.ziparchive.php或其他5.2本地類?
編輯的建議,提出了一些很好的想法如何可以未做臨時文件是可行的,但由於我需要使用代理服務器適配器已經,去創建一個的長度自己的適配器的目的,只是不值得。
我結束了使用tmpname創建一個tmp文件(這是我想避免的,但最終在這裏結束了)。
if ($response->isSuccessful()){
$tmpfile = tempnam(sys_get_temp_dir(),'Insight');
if ($tmpfile!==false){
$handle = fopen($tmpfile, "w");
if (fwrite($handle, $response->getBody())!==false){
$zip = new ZipArchive;
if ($zip->open($tmpfile) === TRUE) {
echo $zip->getFromIndex(0);
$zip->close();
} else {
$this->errorLog('Unable to open zip file '.$tmpfile);
}
}else{
$this->errorLog('Unable to write to temporary file '.$tmpfile);
}
fclose($handle);
}else{
$this->errorLog('Unable to create temporary zip file in '.sys_get_temp_dir());
}
}else{
$this->errorLog('Unable to download url '.$insightUrl);
}
你就不能使用'zip_open( 「http://url/to/download.zip」)'? – 2011-06-01 08:27:46
@Jules需要使用代理,並且可能必須使用cookie。不要說這可能無法用你的方式完成,但如果我仍然可以使用zend http客戶端,肯定會更容易。 – Niklas 2011-06-01 08:29:15