Laavel에서 확장자가 없는 파일 이름 집합을 가져오는 방법 노트

10977 단어 Laraveltech

개시하다


라벨의 스토어 디렉터리에는'같은 파일 이름이지만 확장자는 다르다'는 것이 있다.이런 느낌이에요.
  • output_20210703072428.csv
  • output_20210703072428.ctl
  • output_20210703073006.csv
  • output_20210703073006.ctl
  • output_20210703073017.csv
  • output_20210703073017.ctl
  • 여기서 '확장자 없는 파일 이름' 만 생각하고 중복되지 않습니다.이런 느낌이에요.
    output_20210703072428
    output_20210703073006
    output_20210703073017
    
    손을 쓰면서 방법을 조사한다.

    전제 조건

  • Mac에서 tree 명령을 사용했습니다. (동작을 확인하는 데 사용됩니다. 없으면 ls 등으로 대체할 수 있습니다)
    brew를 통해 설치 가능
  • $ brew install tree
    

    시도해 본 일


    Laavel 프로젝트 만들기


    $ composer create-project laravel/laravel get-file-name-set
    

    확인 파일 만들기

    storage/app/public/에서 같은 파일 이름이지만 확장명이 다른 파일 몇 개를 만들었다.제작 후 상태는 다음과 같습니다.
    $ cd storage/app/public/
    $ head *
    ==> output_20210703072428.csv <==
    1,apple,100
    2,banana,150
    3,cherry,200
    ==> output_20210703072428.ctl <==
    38
    ==> output_20210703073006.csv <==
    3,apple,100
    2,banana,150
    1,cherry,200
    ==> output_20210703073006.ctl <==
    38
    ==> output_20210703073017.csv <==
    3,apple,100
    1,banana,150
    2,cherry,200
    ==> output_20210703073017.ctl <==
    38
    

    설명 처리


    web.처리가 php에서 설명됨
    <?php
    
    use Illuminate\Support\Facades\Route;
    use Illuminate\Support\Facades\File;
    
    /*
    |--------------------------------------------------------------------------
    | Web Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register web routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group which
    | contains the "web" middleware group. Now create something great!
    |
    */
    
    Route::get('/', function () {
        return view('welcome');
    });
    
    Route::get('/list', function () {
        $path = storage_path( 'app/public' );
    
        $fileNames = array();
    
        $files = File::files( $path );
    
        // See: https://www.php.net/manual/ja/function.pathinfo.php
        foreach( $files as $file ){
            $fileNames[] = pathinfo( $file->getFilename(), PATHINFO_FILENAME );
        }
        // See: https://www.php.net/manual/ja/function.array-unique.php
        foreach( array_unique( $fileNames ) as $fileName ){
            echo( $fileName . "\n" );
        }
    });
    

    보태다


       $fileNames[] = pathinfo( $file->getFilename(), PATHINFO_FILENAME );
    
    pathinfo의 두 번째 매개 변수에 PATHINFO_FILENAME를 지정하면 확장자가 없는 파일 이름을 얻을 수 있습니다
       foreach( array_unique( $fileNames ) as $fileName ){
           echo( $fileName . "\n" );
       }
    
    array_unique에서 중복되지 않는 그룹을 얻을 수 있습니다.(참고: 키 인덱스 유지)

    동작 확인


    파일의 상태를 확인합니다.
    $ cd storage/app/public/
    $ tree
    .
    ├── output_20210703072428.csv
    ├── output_20210703072428.ctl
    ├── output_20210703073006.csv
    ├── output_20210703073006.ctl
    ├── output_20210703073017.csv
    └── output_20210703073017.ctl
    0 directories, 6 files
    
    HTTP 요청을 수행하여 확장자가 없는 파일 이름이 중복 가져오지 않는지 확인합니다.
    $ curl http://localhost:8000/list
    output_20210703072428
    output_20210703073006
    output_20210703073017
    
    확인 완료.

    좋은 웹페이지 즐겨찾기