За последние 24 часа нас посетили 16463 программиста и 1729 роботов. Сейчас ищут 727 программистов ...

Почему zip-файл становится нечитаемым после скачивания?

Тема в разделе "PHP для новичков", создана пользователем borus, 21 ноя 2017.

  1. borus

    borus Активный пользователь

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Здравствуйте!

    Есть код, который объединяет файлы в архив и отдает его на скачивание браузеру:
    PHP:
    1.             $error = "";
    2.             if(extension_loaded('zip')){
    3.                 if(count($all_files) > 0){
    4.                     // проверяем выбранные файлы
    5.                     $zip = new ZipArchive(); // подгружаем библиотеку zip
    6.                     $zip_name = "lettertoourself.zip"; // имя файла
    7.                     if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){
    8.                         $error .= "* Sorry ZIP creation failed at this time";
    9.                     }
    10.                     foreach($all_files as $file){
    11.                         $zip->addFile($file); // добавляем файлы в zip архив
    12.                     }
    13.                     $zip->close();
    14.                     if(file_exists($zip_name)) {
    15.                         // отдаём файл на скачивание
    16.                         header('Content-type: application/zip');
    17.                         header('Content-Disposition: attachment; filename="'.$zip_name.'"');
    18.                         readfile($zip_name);
    19.                         // удаляем zip файл если он существует
    20.                         unlink($zip_name);
    21.                     }
    22.  
    23.                 }
    24.                 else
    25.                 $error .= "* Please select file to zip ";
    26.             }
    27.             else
    28.                 $error .= "* You dont have ZIP extension";
    29.             echo $error;
    Если файл архива не удалять и скачивать каким-то методом, и затем открывать, он открывается, все файлы внутри видны. Но если пытаться открыть архив, который скачивается через браузер, то возникает ошибка "Сжатая zip-папка имеет неверный формат".
    Как это исправить, сделать так, чтобы файл, скачиваемый через браузер, открывался?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    скачай и посмотри что в нутри и чем он отличается от хорошего своего брата
     
  3. borus

    borus Активный пользователь

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Доброе утро! Спасибо. Архив скачанный не открывается, не смогу посмотреть, что внутри. Как тогда проанализировать причину? Может неправильные http-заголовки или кодировки приложили свою руку в этом?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.596
    Симпатии:
    1.764
    Так не архиватором посмотри, а бинарным просмоторщиком/редактором. Вдруг там какую-нибудь хрень типа предупреждения php обнаружишь. Исходим из того всегда, что это наша программа с ошибкой, а не расширение php