[Laavel] ZIP로 여러 파일 다운로드
사용할 라이브러리
stechstudio/laravel-zipstream
이 프로그램 라이브러리는 ZIP 파일을 만들고 완성된 곳에서 동시에 흐르는 전송 형식으로 다운로드하여 메모리와 CPU의 소모를 억제할 수 있다.
"maennchen/ZipStream-PHP"라이브러리는 라벨이 편리하게 사용할 수 있도록 만들어진 것으로 보인다.
사용법
$ composer require stechstudio/laravel-zipstream
$ composer install
이후 다음과 같이use를 발표하고 사용하면 간단하게 실현할 수 있다.use STS\ZipStream\ZipStreamFacade AS Zip;
class ZipController {
public function build()
{
return Zip::create("package.zip", [
"/path/to/Some File.pdf",
"/path/to/Export.xlsx"
]);
}
}
샘플
use STS\ZipStream\ZipStreamFacade AS Zip;
class ZipController
{
public function build()
{
// 対象File取得
$files = File::get();
$filePaths = [];
// ZIP化するにあたりダウンロードさせたいファイルのフルパスが必要な為、配列で作成
$download_dir = '/work/application/storage/app/test'
foreach($files as $file) {
$filePaths[] = $downloads_dir.'/'.$file->getName(); // ファイル名を取得してフルパスを作成
}
// 完成時のzipファイルの名前
$zipname = 'download.zip';
// zipファイルを指定ディレクトリに作成
Zip::create($zipname, $filePaths)
->saveTo($download_dir . '/zip');
$fullpath = $download_dir . '/zip/' . $zipname;
// 作成されたzipファイルをダウンロードしてディレクトリから削除
return response()->download($fullpath, basename($fullpath), [])->deleteFileAfterSend(true);
}
}
샘플은 디렉터리 등에서 직접 썼지만 실제로는 config 파일과 env 파일을 참조하는 형식이 좋다.선전하다.
개인 링크 엔지니어 모집 중!
Reference
이 문제에 관하여([Laavel] ZIP로 여러 파일 다운로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/person_link/articles/7a2dd432d24afa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)