[Laravel] 라라벨 스토리지에서 특정 파일들 찾기

Kyoungseo Park·2022년 2월 13일
0

라라벨 스토리지에서 파일 찾기

이슈

Storage::path('파일명') 파일명부분을 어떤 이름으로 시작하는 파일을 찾아달라 는 질문이 들어왔다.

해결 방법

Storage::get() 은 파일 경로를 매개변수로 사용하고 이 경로로 식별되는 단일 파일의 내용을 반환하거나 파일을 찾을 수 없는 경우 FileNotFoundException 을 발생시킨다.

와일드카드는 경로를 지원되지 않는다.
그 이유는 단일 파일의 콘텐츠가 Storage::get() 에서 반환된다는 규칙을 위반하는 와일드카드가 있는 경로와 일치하는 여러 파일이 있을 수 있기 때문이다. 또한 원격 저장소의 경우 전체 폴더를 검색하는 것이 느리다.

그러나 Storage 파사드가 제공 하는 다른 기능을 사용하여 원하는 것을 얻을 수 있다.
먼저 저장소의 내용을 나열한다. 그러면 사용 가능한 모든 파일의 목록이 표시됩니다.
그런 다음에 목록을 직접 필터링하여 일치하는 파일 목록을 가져온다.

// 파일 이름 나열
$allFiles = Storage::files('');

// 파일 이름과 일치하는 항목을 필터
$matchFiles = preg_grep('/^filename\./', $allFiles);

// 일치하는 파일을 출력
foreach ($matchFiles as $path) {
  echo Storage::get($path);
}

추가

일반적으로 파일을 관리하는 방법은 DB에 파일 이름을 저장하는 것이다.
위 이슈의 경우 DB에 파일 이름을 가져오지 않았기에 다른 방법을 찾아야 했다.


커뮤니티 소개

모던 PHP 유저 그룹

PHP 개발자 커뮤니티 중 모던 PHP 유저 그룹 이 있다.
매달 첫번째 수요일 정기 모임에서 여러 기술 발표가 진행된다.

현재 코로나 19로 인해 비대면으로 진행되는 만큼 부담이 없고,
누구나 참여 가능하니 PHP 기술 발표를 듣는 것은 성장에 큰 도움이 되니 참고하면 좋다.

Facebook

Facebook : https://www.facebook.com/groups/655071604594451/

Discord

Discord : https://discord.com/invite/9BuTr5K63g

Web

Web : https://modernpug.org/

Youtube

Youtube : https://www.youtube.com/channel/UCYyHPSMNxfoRxHuqx7QeLJg

0개의 댓글