Приложение Laravel 8 — Не удается зайти на сайт, когда я пытаюсь загрузить архивированный файл

#php #laravel #zip #response

Вопрос:

Я новичок на форуме, надеюсь, что я выполнил все рекомендации форума, опубликовав свой ответ.

В моем веб-приложении, которое я разрабатываю с помощью Laravel 8, мне нужно загрузить zip-файлы Для этого, посмотрев в Интернете, я решил использовать maennchen/zipstream-php пакет.

Для создания zip-файла я следовал рекомендациям документации по пакету, а затем загрузил только что созданный .zip.

Но, как и в названии, когда с моей точки зрения я нажимаю на download file кнопку, я получаю сообщение об ошибке Unable to reach the site .

Это мой код, но я не могу понять, из-за чего возникает эта ошибка.

 public function exportZipFile(Request $request){

            // create a new zipstream object
            $zip = new ZipStreamZipStream('example.zip', $options);

            // create a file named 'hello.txt'
            $zip->addFile('hello.txt', 'This is the contents of hello.txt');

            // add a file named 'some_image.jpg' from a local file 'path/to/image.jpg'
            $zip->addFileFromPath('some_image.jpg', 'path/to/image.jpg');

            // add a file named 'goodbye.txt' from an open stream resource
            $fp = tmpfile();
            fwrite($fp, 'The quick brown fox jumped over the lazy dog.');
            rewind($fp);
            $zip->addFileFromStream('goodbye.txt', $fp);
            fclose($fp);

            $response = Response::create(200);
            $response->header('Content-Type', 'application/zip');
            $response->header('Cache-Control', 'public');
            $response->header('Content-Disposition', 'attachment; filename="file.zip"');
            
            return $response()->stream(function() use ($zip){
                $zip->finish();
            });

}
 

Я ценю любые советы или предложения
Заранее всем спасибо

Комментарии:

1. Вы уверены насчет $response->steam? Разве это не должно быть $response->Потоковая загрузка? И похоже, что zip->завершает уже установленные заголовки и делает свой собственный ответ. Я сомневаюсь, что вам нужен zip->готово. Ваш $fp на самом деле является файлом, почему бы просто не использовать его следующим образом: response()->загрузить($pathToFile);

2. @CyberAleks, привет, я использовал $response->stream() , потому что я следовал процедуре, найденной в Интернете. А также использование $zip->finish() , которое я всегда получал из этого руководства. Чтобы ответить на ваш последний вопрос, я не сохраняю zip-файл, поэтому не знаю, по какому пути идти, когда я его создаю и загружаю.