Я пытаюсь добавить функциональность на свой сайт, где пользователи могут загружать несколько файлов изображений через одну .zip
папку. В настоящее время у меня этот код выполняется, но когда я открываю загруженный zip-файл, он извлекает другой архив zip-файла my-archive (3) 2.zip.cpgz
и каждый раз, когда я пытаюсь его открыть, он извлекает еще один zip-файл.
Вот мой базовый код, использующий встроенную функцию zip php.
$image1 = "http://cdn.screenrant.com/wp-content/uploads/Darth-Vader-voiced-by-Arnold-Schwarzenegger.jpg"; $image2 = "http://cdn.screenrant.com/wp-content/uploads/Star-Wars-Logo-Art.jpg"; $files = array($image1, $image2); $zipname = 'file.zip'; $zip = new ZipArchive; $zip->open($zipname, ZipArchive::CREATE); foreach ($files as $file) { $zip->addFile($file); } $zip->close(); header('Content-Type: application/zip'); header('Content-disposition: attachment; filename='.$zipname); header('Content-Length: ' . filesize($zipname)); readfile($zipname);
РЕДАКТИРОВАТЬ
Я стараюсь получить предоставленный ответ на работу. Я просто попробовал самое последнее редактирование и получил эту ошибку
]
Вы должны загружать внешние файлы, а затем архивировать их.
$image1 = "http://img.ruphp.com/php/Darth-Vader-voiced-by-Arnold-Schwarzenegger.jpg"; $image2 = "http://img.ruphp.com/php/Star-Wars-Logo-Art.jpg"; $files = array($image1, $image2); $tmpFile = tempnam('/tmp', ''); $zip = new ZipArchive; $zip->open($tmpFile, ZipArchive::CREATE); foreach ($files as $file) { // download file $fileContent = file_get_contents($file); $zip->addFromString(basename($file), $fileContent); } $zip->close(); header('Content-Type: application/zip'); header('Content-disposition: attachment; filename=file.zip'); header('Content-Length: ' . filesize($tmpFile)); readfile($tmpFile); unlink($tmpFile);
В приведенном выше примере я использовал функцию file_get_contents
, поэтому, пожалуйста, включите allow_url_fopen
или используйте curl для загрузки файлов.