В моем приложении Larevel я хотел бы собрать несколько файлов в zip-файл для загрузки клиентом. Я предпочитаю не помещать почтовый индекс в общую папку.
поэтому я создаю папку «tobedownload» в своей папке «/ storage» и планирую поместить туда zip-файл. но я получил ошибку Whoops:
"ZipArchive::close(): Failure to create temporary file: No such file or directory"
Мой пример кода выглядит следующим образом: (скажем, файл должен быть помещен в zip-файл «what.PNG» в публичной папке. Не беспокойтесь, я не буду использовать файлы в этом месте в реальной реализации. Пример архивный файл называется «AllDocuments.zip» (он находится в папке хранилища / полной загрузки).
публичная функция downloadzip () {
Storage::makeDirectory('tobedownload',$mode=0775);
$path=storage_path('tobedownload');
$public_dir=public_path();
$zipFileName = 'AllDocuments.zip';
$zip=new ZipArchive();
if ($zip->open( $path. '/' .$zipFileName, ZipArchive::CREATE))
{
$zip->addFile($public_dir.'/whatever.PNG' ); //where the file needs to be add to archive
$zip->close();
}
}
Но, скажем, если я помещу свой новый zip-файл в общую папку, я смогу создать zip-файл. следующий пример кода работает.
публичная функция downloadzip () {
// кажется, все работает, если я помещаю архив в общую папку
$public_dir=public_path();
$zipFileName = 'AllDocuments.zip';
$zip=new ZipArchive();
if ($zip->open( $public_dir. '/' .$zipFileName, ZipArchive::CREATE))
{
$zip->addFile($public_dir.'/whatever.PNG' ); //where the file needs to be add to archive
$zip->close();
}
}
Я подозреваю, что это проблема с разрешениями, но я уже установил хранилище 0755. Спасибо за любую помощь ... Я нахожусь на Laravel 5.6.