Я пытаюсь написать скрипт PHP для загрузки zip-файла с веб-сервера, который содержит один 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 МБ сжатый и 30 МБ несжатый.