Архивирование экспортированных файлов в laravel - PullRequest
1 голос
/ 16 марта 2020

Я установил пакет phpoffice / phpword на laravel для экспорта нескольких файлов, используя foreach l oop внутри моего контроллера (см. Код ниже). Каждый файл назван в соответствии с соответствующим номером, например. 15_en.do c, 16_en.do c et c, и все файлы автоматически сохраняются в папке laravel \ storage .

//Controller excerpt 

foreach($regs as $i) 
{
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->setDefaultFontName('Ariel');

//code

//saving results:
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
 try 
    {
        $objWriter->save(storage_path(''.$i->id.'_en.docx'));
        continue;
    }  
    catch (Exception $e) 
    {
    }

    return response()->download(storage_path(''.$i->id.'_en.docx'));

  }

Теперь я хочу иметь все файлы заархивированы. По этой причине я установил пакет zanysoft / laravel -zip . Я отредактировал мой код, как показано ниже. Это создает zip-файл в папке laravel publi c, , включая вложенные папки проекта по умолчанию . Как я могу их исключить? И, во-вторых, когда проект будет запущен, как пользователи смогут загрузить файл .zip?

Спасибо !!

//Controller excerpt 

foreach($regs as $i) //
{

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->setDefaultFontName('Ariel');

//code

...

//code

//saving results:

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
try 
    {
        $objWriter->save(storage_path(''.$i->id.'_en.docx'));
           continue;

    }  
catch (Exception $e) 
    {
    }

    return response()->download(storage_path(''.$i->id.'_en.docx'));

}  //@forech ends here

$zip = Zip::create('your_zipfile.zip');   // this creates zip file name
$zip->add('c:\xampp\htdocs\laravel\storage'); //this zips files exported and the rest of subfolders!

1 Ответ

0 голосов
/ 02 апреля 2020

Решение здесь:

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
    try 
        {

            $objWriter->save(storage_path('zipped_en\'.$i->id.'_en.docx'));  
            continue;

        } 
        catch (Exception $e) 
            {
            }

            return response()->download(storage_path('zipped_en\'.$i->id.'_en.docx'));   
            continue;

} //@forech ends here



$we = Carbon::now(); //I want to add date and time creation attribute to filename created
$we = Carbon::createFromFormat('Y-m-d H:i:s', $we)->format('dmYHis');


$zip = Zip::create('zipped_en_'.$we.'.zip'); 



$zip->add('c:\xampp\htdocs\laravel\storage\zipped_en');
...