2015-11-23 3 views
2

Я хочу создать PHP-код для распаковки файла, а затем извлечь его в папку. Я знаю, чтобы извлечь все файлы внутри ZIP, но я хочу, чтобы извлечь его один за другим, потому что я хочу, чтобы проверить каждый файл должен быть ниже 1 МбPHP Разархивировать файлы и извлекать файлы по одному

Вот мой код:

$zip = new ZipArchive(); 
for ($i=0; $i<$zip->numFiles;$i++) 
    { 
     $current = $zip->statIndex($i); 
     if($current["size"] > (1*1024*1024)) 
     { 
      printf("%s (size: %d bytes) is too big, failed to upload this photo<br>", $current["name"], $current["size"]); 
     } 
     else 
     { 
      $location = 'picture/'.$current['name']; 
      if(move_uploaded_file($current['name'], $location)) 
       printf("%s successfully uploaded<br>", $current["name"]); 
      else 
       printf("Failed <br />"); 
     } 
    } 

I всегда сбой по этим строковым кодом: if(move_uploaded_file($current['name'], $lokasi)) он всегда возвращает Failed, и я знаю, что $current['name'] - это только имя файла, а не файл внутри zip. Кто-нибудь знает, как получить файл внутри zip (один за другим)?

ответ

1

Наконец, из этого link я читал, поэтому я выбираю, чтобы извлечь файл с методом массива. Вот мой конечный код для моей проблемы:

for ($i=0; $i<$zip->numFiles;$i++) 
     { 
      $current = $zip->statIndex($i); 
      if($current["size"] > (1*1024*1024)) 
      { 
       printf("%s (size: %d bytes) is too big, failed to upload this image!<br>", $current["name"], $current["size"]); 
      } 
      else 
      { 
       $location = $folder.'/'.$folder2.'/'; 
       if($zip->extractTo($location , array($current['name']))) 
        printf("%s successfully uploaded<br>", $current["name"]); 
       else 
        printf("Failed <br />"); 
      } 
     } 
0

http://docs.php.net/move_uploaded_file говорит:

Эта функция проверяет, что файл обозначается именем файла является допустимым загруженным файлом (это означает, что он был загружен через механизм HTTP POST загрузки в PHP)
архивный файл почтового индекса может быть загружен. Но файлы, извлеченные из этого сценария, отсутствуют.
И получение записи stat фактически не извлекает данные в локальную файловую систему. Для этого вы можете быть заинтересованы в ZipArchive::extractTo и/или ZipArchive::getStream

+0

Спасибо @VolkerK, ваша ссылка осветит мою голову ... :) –

Смежные вопросы