>  기사  >  PHP 프레임워크  >  laravel 기본 저장소 수정

laravel 기본 저장소 수정

PHPz
PHPz원래의
2023-04-23 09:18:44176검색

Laravel 애플리케이션 개발에서 파일 업로드는 매우 일반적인 작업입니다. Laravel은 업로드된 파일, 즉 파일 시스템을 관리하는 매우 편리한 방법을 제공합니다. 파일 시스템은 실제로 Laravel의 기본 저장 방법이며 업로드된 파일을 디스크의 지정된 위치에 저장합니다.

그러나 경우에 따라 업로드된 파일을 클라우드 저장소, CDN 또는 기타 원격 저장소 서비스와 같은 다른 위치에 저장해야 할 수도 있습니다. 이때 우리는 Laravel의 기본 저장 방식을 우리의 필요에 맞게 수정해야 합니다.

이 글에서는 다양한 시나리오에 맞게 Laravel의 기본 저장소를 수정하는 방법을 소개합니다.

1. Laravel 파일 시스템

Laravel에서는 파일 및 디렉터리를 관리하는 데 파일 시스템이 사용됩니다. Laravel의 파일 시스템에는 파일 생성, 파일 읽기, 파일 업데이트 및 파일 삭제와 같은 몇 가지 기본 작업이 포함되어 있습니다.

Laravel의 파일 시스템은 로컬 디스크, S3와 같은 클라우드 저장소, FTP 저장소 등을 포함하여 여러 디스크를 저장소로 사용할 수 있습니다.

우리는 config/filesystems.php 구성 파일에서 Laravel의 파일 시스템을 구성할 수 있습니다:

<code class="php"><?php

return [

    'default' => 'local',

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
        ],

    ],

];</code>

위 코드에서 로컬 디스크(로컬), 공용 디스크(공용) 및 세 가지 유형의 디스크가 여기에 구성되어 있음을 볼 수 있습니다. S3 클라우드 스토리지(s3).

2. 기본 저장소 수정

Laravel에서는 Storage 클래스를 사용하여 파일 시스템을 관리할 수 있습니다. 기본적으로 Laravel은 로컬 디스크를 기본 파일 시스템 저장 위치로 사용합니다. 이 기본 디스크는 config/filesystems.php에 정의되어 있으며 기본값은 local입니다.

config/filesystems.php의 기본 구성 항목을 수정하여 기본 저장소를 수정할 수 있습니다.

<code class="php"><?php

return [

    'default' => env('FILESYSTEM_DRIVER', 'local'),

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
        ],

    ],

];</code>

위 코드에서는 기본값 값을 local에서 env('FILESYSTEM_DRIVER', 'local')로 변경합니다. env 함수는 여기서 사용되며, 이를 통해 .env 파일에 FILESYSTEM_DRIVER 환경 변수를 정의하여 기본 저장소를 수정할 수 있습니다.

예를 들어, .env 파일에 FILESYSTEM_DRIVER=s3을 정의하면 스토리지 파일 시스템을 사용할 때 Laravel은 s3 디스크를 기본 파일 시스템 스토리지 위치로 사용합니다.

3. 사용자 지정 저장소 사용

기본 저장소를 수정하는 것 외에도 특별한 요구 사항에 맞게 사용자 지정 저장소를 구성할 수도 있습니다.

먼저 새로운 스토리지 드라이버를 생성해야 합니다. 앱 디렉터리 내에 Storage라는 새 디렉터리를 만든 다음 해당 디렉터리에 새 클래스를 만듭니다.

예를 들어 Hadoop이라는 스토리지 드라이버를 생성하려는 경우 HadoopDriver라는 클래스를 생성할 수 있습니다.

<code class="php"><?php

namespace App\Storage;

use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\ServiceProvider;

class HadoopDriverServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Storage::extend('hadoop', function ($app, $config) {
            // 返回一个实现了 FilesystemAdapter 接口的类
            return new HadoopFileSystemAdapter($config);
        });
    }
}

class HadoopFileSystemAdapter implements FilesystemAdapter
{
    // 实现 FilesystemAdapter 接口的方法
}</code>

위 코드에서는 HadoopDriverServiceProvider 클래스를 정의하고 부팅 메서드에서 New Storage라는 이름을 등록합니다. hadoop용 드라이버.

그런 다음 FilesystemAdapter 인터페이스의 모든 메서드를 구현하는 HadoopFileSystemAdapter 클래스를 정의합니다. 이러한 메서드는 스토리지 파일 시스템을 사용하여 파일 생성, 파일 읽기, 파일 업데이트, 파일 삭제 등과 같은 파일 시스템에서 다양한 작업을 수행할 때 호출됩니다.

마지막으로 위에서 생성한 HadoopDriverServiceProvider 클래스를 Laravel 애플리케이션에 등록해야 합니다. config/app.php 파일의 공급자 배열에 HadoopDriverServiceProvider 클래스를 추가하면 됩니다:

<code class="php"><?php

return [

    // 省略其它代码

    'providers' => [

        // 省略其它服务提供者

        /*
         * 注册 Hadoop 存储驱动
         */
        \App\Storage\HadoopDriverServiceProvider::class,

    ],

];</code>

4. 사용자 지정 저장소 사용

사용자 지정 저장소를 사용하려면 저장소 메서드를 호출하고 저장소 경로를 지정해야 합니다. 예를 들어 hadoop이라는 사용자 정의 저장소를 사용하려면 다음과 같이 사용할 수 있습니다.

<code class="php">use Illuminate\Support\Facades\Storage;

Storage::disk('hadoop')->put('file.txt', $content);</code>

위 코드에서는 disk 메소드를 사용하여 사용할 저장소를 hadoop으로 지정합니다. 그런 다음 put 메소드를 사용하여 $content의 내용을 파일 시스템의 file.txt 파일에 씁니다.

요약

Laravel 애플리케이션 개발에서 파일 업로드 및 저장은 매우 일반적인 요구 사항입니다. Laravel은 이러한 작업을 관리할 수 있는 강력한 파일 시스템을 제공하며, 필요에 따라 기본 파일 시스템 저장 위치를 ​​수정하고 특별한 요구 사항을 충족하는 사용자 정의 저장소 드라이버를 생성할 수도 있습니다. 이러한 기능은 애플리케이션 유연성과 확장성을 크게 향상시킵니다.

위 내용은 laravel 기본 저장소 수정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.