я создал с php zip ( http://php.net/manual/de/book.zip.php ) zip-файл
теперь я должен отправить его в браузер / принудительно загрузить для него.
<?php // or however you get the path $yourfile = "/path/to/some_file.zip"; $file_name = basename($yourfile); header("Content-Type: application/zip"); header("Content-Disposition: attachment; filename=$file_name"); header("Content-Length: " . filesize($yourfile)); readfile($yourfile); exit; ?>
Установите заголовки контента, содержимого и содержимого, а затем выведите файл.
header('Content-Type: application/zip'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Content-Length: '.filesize($filepath) ); readfile($filepath);
Настройка Content-Disposition: attachment
предложит браузеру загрузить файл, а не отображать его напрямую.
Вам нужно сделать это таким образом, иначе ваш почтовый индекс будет поврежден:
$size = filesize($yourfile); header("Content-Length: \".$size.\"");
Таким образом, заголовку content-length требуется реальная строка, а файлы – возврату и целое число.
Если у вас уже есть свой ZIP-сервер на сервере, и если этот ZIP достигнут Apache в HTTP или HTTPS, тогда вы должны перенаправить этот файл вместо «чтения» с помощью PHP.
Это намного эффективнее, так как вы не используете PHP, поэтому нет необходимости в процессоре или ОЗУ , и это будет быстрее загружаться , так как не требуется чтение и запись PHP, а только прямая загрузка. Давайте делать Apache!
Таким образом, хорошая функция может быть:
if($is_reachable){ $file = $relative_path . $filename; // Or $full_http_link header('Location: '.$file, true, 302); } if(!$is_reachable){ $file = $relative_path . $filename; // Or $absolute_path.$filename $size = filesize($filename); // The way to avoid corrupted ZIP header('Content-Type: application/zip'); header('Content-Disposition: attachment; filename=' . $filename); header('Content-Length: ' . $size); // Clean before! In order to avoid 500 error ob_end_clean(); flush(); readfile($file); } exit(); // Or not, depending on what you need
Надеюсь, что это поможет.