#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-файл, поэтому не знаю, по какому пути идти, когда я его создаю и загружаю.