Скопируйте извлеченные файлы из ZIP в каталог - PullRequest
0 голосов
/ 02 октября 2010

Примечание: я на локальном хосте, поэтому CHMOD'ing не является ответом.


В любом случае, я не могу скопировать файлы, которые были извлечены из ZIP в каталог, файлы извлечены, но они не будут скопированы ... файлы просто лежат в корневой папке, где upload.php является. Я получил это:

exec('unzip ' . $_FILES['file']['tmp_name'], $ary, $output);

$img = 0;

$number = count($ary);

foreach($ary as $file)
{
    copy($file, 'i/');
    unlink($file);
    $img++;
}

echo $img . '/' . $number;

Выводит 11/11, так что это хорошо ... но файлы не копируются и исходные файлы не удаляются. Почему он не копирует их?

Ответы [ 3 ]

2 голосов
/ 02 октября 2010

Проблема в том, что вы предполагаете, что массив $ary содержит имена файлов. Но это не так.

$ary, который содержит вывод команды unzip, будет выглядеть примерно так:

extracting: foo
extracting: bar
...

Попробуйте сбросить содержимое массива, используя var_dump($ary), чтобы подтвердить это.

Мой совет: не используйте внешнюю команду unzip, вместо этого используйте build in zip-функций PHP как:

$zip = new ZipArchive;
if ($zip->open("$_FILES['file']['tmp_name']") === TRUE) {
    $zip->extractTo('i/');
    $zip->close();
} else {
    // failed to extract.
}
0 голосов
/ 02 октября 2010

Не копирует файлы, потому что вы не прочитали руководство полностью:

$ dest - Путь назначения.Если $ dest является URL-адресом, операция копирования может завершиться ошибкой, если оболочка не поддерживает перезапись существующих файлов.Предупреждение. Если файл назначения уже существует, он будет перезаписан.

Необходимо указать полный путь назначения (включая имя файла), а не только каталог.

0 голосов
/ 02 октября 2010

Как уже упоминалось в codaddict, попробуйте модуль PECL zip или PEAR File_Archive.Но если вы не можете установить ни один из них и использовать старый PHP, попробуйте:

exec('unzip ' . $_FILES['file']['tmp_name'] . ' | tail -n"+2" | cut -d" " -f4 ', $ary, $output);

Это даст вам только имена файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...