我試圖寫一個PHP腳本下載從包含一個CSV文件,然後負載Web服務器的zip文件將提取的CSV文件的內容放入現有的MySQL數據庫表中。我怎樣才能下載並解壓壓縮的CSV並獲得CSV文件的內容到MySQL表
$targetFile = 'data-' . md5(microtime()) . '.zip';
$url = 'http://www.address.com/data.zip';
$out = fopen('/path/to/zip/save/folder/' . $targetFile , 'wb');
$ch = curl_init();
curl_setopt($ch, CURLOPT_FILE, $out);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);
$info = curl_getinfo($ch);
if($info['http_code'] == 200 && $info['content_type'] == 'application/x-zip-compressed') {
$zh = zip_open('/path/to/zip/save/folder/' . $targetFile);
}
else {
exit('Download of ZIP file failed.');
}
上述代碼設法使用唯一名稱將文件下載到服務器上的目錄。但我無法提取內容。
我試過使用PHP的zip_open
命令來提取zip,但它總是返回錯誤代碼19
而不是句柄。我檢查了傳遞給zip_open函數的路徑,它是一個完整的系統路徑,即/path/to/zip/save/folder/data-5384e2306718492958f20e68de95c6fa.zip
。
注:
CSV文件文件是2.5 MB壓縮到30 MB壓縮。
如果您將data-5384e2306718492958f20e68de95c6fa.zip下載到您的計算機,您是否可以用WinZip或您最喜歡的編輯器打開它。 – vicatcu 2010-01-25 18:39:45
是的,我可以做到這一點。但是這不會幫助我解決這個問題。該腳本每天通過CRON運行一次,因此不需要手動干預。 – Camsoft 2010-01-26 09:43:15