파일 저장


ㅋㅋ |

파일 저장소

  • 소개
  • 구성
  • 파일 업로드
  • 파일 가시성
    • 파일 삭제
    • 디렉터리
    • 파일 시스템 사용자 정의
    • Laravel 소개
    • 강력한 파일 제공 Frank de Jonge의 강력한 Flysystem 확장팩의 이점을 누릴 수 있는 시스템 추상화입니다. Laravel 파일 시스템 통합은 로컬 파일 시스템, Amazon S3 및 Rackspace 클라우드 스토리지 작업을 위한 사용하기 쉬운 드라이버를 제공합니다. 더 좋은 점은 API가 각 시스템마다 동일하게 유지되므로 이러한 스토리지 옵션 간 전환이 간단하다는 것입니다.
  • Configuration파일 시스템의 구성 파일은
  • 에 있습니다. 이 파일에서는 모든 "디스크"를 구성할 수 있습니다. 각 디스크는 특정 스토리지 드라이브와 스토리지 위치를 나타냅니다. 지원되는 각 드라이버에 대한 샘플 구성이 구성 파일에 포함되어 있습니다. 따라서 스토리지 기본 설정 및 자격 증명을 반영하도록 구성을 수정하면 됩니다.
  • 물론 필요에 따라 여러 디스크를 구성할 수 있으며 여러 디스크가 동일한 드라이버를 공유하도록 만들 수도 있습니다.

공용 디스크

공용 디스크는 공개적으로 액세스할 수 있는 파일용입니다. 기본적으로 공용 디스크는 로컬 드라이버를 사용하고 이러한 파일을 storage/app/public 디렉터리에 저장합니다. 네트워크를 통해 액세스할 수 있게 하려면 public/storage에서 storage/app/public으로의 심볼릭 링크를 생성해야 합니다. 이 접근 방식은 공개적으로 액세스 가능한 파일을 동일한 디렉터리에 유지하므로 Envoyer와 같은 다운타임 없는 배포 시스템을 사용할 때 이러한 파일을 여러 배포 간에 쉽게 공유할 수 있습니다. Artisan 명령어 storage:link를 사용하여 심볼릭 링크를 생성할 수 있습니다: public 磁盘适用于要公开访问的文件。默认情况下, public 磁盘使用 local 驱动,并且将这些文件存储在 storage/app/public 目录下。为了使它们能通过网络访问,你需要创建 public/storagestorage/app/public 的符号链接。这种方式能把可公开访问文件都保留在同一个目录下,以便在使用零停机时间部署系统如 Envoyer 的时候,就可以轻松地在不同的部署之间共享这些文件。你可以使用 Artisan 命令 storage:link 来创建符号链接:

你可以使用 Artisan 命令 storage:link 来创建符号链接:

php artisan storage:link

当然,一旦一个文件被存储并且已经创建了符号链接,你就可以使用辅助函数 asset 来创建文件的 URL:

echo asset('storage/file.txt');

本地驱动

使用 local 驱动时,所有文件操作都与你在配置文件中定义的 root 目录相关。该目录的默认值是 storage/app 。因此,以下方法会把文件存储在 storage/app/file.txt 中:

Storage::disk('local')->put('file.txt', 'Contents');

驱动程序先决条件

Composer 包

在使用 SFTP、S3 或 Rackspace 等驱动之前,你需要通过 Composer 安装相应的软件包:

  • SFTP: league/flysystem-sftp ~1.0
  • Amazon S3: league/flysystem-aws-s3-v3 ~1.0
  • Rackspace: league/flysystem-rackspace ~1.0

使用缓存适配器是提高性能的一个绝对必要条件。你需要一个额外的包:

  • CachedAdapter: league/flysystem-cached-adapter ~1.0

S3 驱动配置

S3 驱动配置信息位于你的 config/filesystems.php 配置文件中。该文件包含 S3 驱动程序的示例配置数组。 你可以自由使用你自己的 S3 配置和凭证修改此阵列。 为方便起见,这些环境变量与 AWS CLI 使用的命名约定相匹配。

FTP 驱动配置

Laravel 的文件系统集成能很好的支持 FTP,不过 FTP 的配置示例并没有被包含在框架默认的 filesystems.php

Artisan 명령어 storage:link를 사용하여 심볼릭 링크를 생성할 수 있습니다:
'ftp' => [
    'driver'   => 'ftp',    
    'host'     => 'ftp.example.com',    
    'username' => 'your-username',    
    'password' => 'your-password',    
    // 可选的 FTP 配置项...    
    // 'port'     => 21,    
    // 'root'     => '',    
    // 'passive'  => true,    
    // 'ssl'      => true,   
     // 'timeout'  => 30,
   ],
Of 물론 파일이 저장되고 심볼릭 링크가 생성되면 도우미 함수 asset를 사용하여 파일의 URL을 생성할 수 있습니다: 🎜
'sftp' => [
    'driver' => 'sftp',    
    'host' => 'example.com',    
    'username' => 'your-username',    
    'password' => 'your-password',    
    // 基于 SSH 密钥的身份验证设置...    
    // 'privateKey' => '/path/to/privateKey',    
    // 'password' => 'encryption-password',    
    // 可选的 SFTP 配置...    
    // 'port' => 22,    
    // 'root' => '',    
    // 'timeout' => 30,
   ],
🎜🎜< div name="3370e9" data-unique="3370e9">🎜🎜로컬 드라이버🎜🎜로컬 드라이버를 사용하면 모든 파일 작업이 root 디렉토리에 정의했습니다. 이 디렉터리의 기본값은 storage/app 입니다. 따라서 다음 방법은 파일을 storage/app/file.txt에 저장합니다: 🎜
'rackspace' => [
    'driver'    => 'rackspace',    
    'username'  => 'your-username',    
    'key'       => 'your-key',    
    'container' => 'your-container',    
    'endpoint'  => 'https://identity.api.rackspacecloud.com/v2.0/',    
    'region'    => 'IAD',    
    'url_type'  => 'publicURL',
  ],
🎜🎜
🎜🎜드라이버 전제 조건🎜
🎜

Composer 패키지

🎜SFTP, S3 또는 Rackspace와 같은 드라이버를 사용하는 경우 이전에 , Composer를 통해 해당 소프트웨어 패키지를 설치해야 합니다: 🎜
  • SFTP: league/flysystem-sftp ~1.0
  • Amazon S3: league/ flysystem-aws-s3-v3 ~1.0
  • Rackspace: league/flysystem-rackspace ~1.0
🎜캐시 어댑터를 사용하는 것은 개선 성능을 위해서는 절대적으로 필요합니다. 추가 패키지가 필요합니다: 🎜
  • CachedAdapter: league/flysystem-cached-adapter ~1.0
🎜

S3 드라이버 구성

🎜S3 드라이버 구성 정보는 config/filesystems.php 구성 파일에 있습니다. 이 파일에는 S3 드라이버에 대한 샘플 구성 배열이 포함되어 있습니다. 자신의 S3 구성 및 자격 증명을 사용하여 이 어레이를 자유롭게 수정할 수 있습니다. 편의상 이러한 환경 변수는 AWS CLI에서 사용하는 명명 규칙과 일치합니다. 🎜
🎜

FTP 드라이버 구성

🎜Laravel의 파일 시스템 통합은 FTP를 매우 잘 지원할 수 있지만 FTP 구성 예는 포함되어 있지 않습니다. 프레임워크의 기본 < code>filesystems.php
파일. 필요한 경우 다음 샘플 구성을 사용할 수 있습니다. 🎜
's3' => [
    'driver' => 's3',    
   // 驱动器其他配置...    
    'cache' => [    
        'store' => 'memcached',        
        'expire' => 600,        
        'prefix' => 'cache-prefix',   
      ],
   ],
🎜🎜

SFTP 드라이버 구성

Laravel의 Flysystem 통합 패키지는 SFTP와 매우 잘 작동하지만 프레임워크의 기본 구성 파일 filesystems.php에는 샘플 구성이 포함되어 있지 않습니다. SFTP 파일 시스템을 구성하려면 다음 샘플 구성을 사용할 수 있습니다. filesystems.php 中并没有包含示范配置。如果要配置 SFTP 文件系统,可以使用如下示例配置:

use Illuminate\Support\Facades\Storage;
Storage::put('avatars/1', $fileContents);

Rackspace 驱动器配置

Laravel 的 Flysystem 集成包与 Rackspace 协同得非常好;不过,在该框架的默认配置文件 filesystems.php 中并没有包含示范配置。如果要配置 Rackspace 文件系统,可以使用如下示例配置:

Storage::disk('s3')->put('avatars/1', $fileContents);

缓存

给指定磁盘开启缓存功能,需要在该磁盘的配置项中直接添加 cachecache 选项应该是一个缓存配置的数组,由缓存驱动名称 store (译者注:文档原始描述文字 disk 与示例代码中的 store 不一致,验证代码后的确应该是 store ,故作此修改。)、 单位为秒的过期时间 expire ,以及缓存前缀 prefix 组成:

$contents = Storage::get('file.jpg');

获取磁盘实例

Storage 门面可用于与任何已配置的磁盘进行交互。例如,你可以使用门面中的 put 方法将头像存储到默认磁盘。如果你使用 Storage 门面中的任何方法,而一开始并没有使用 disk 方法,那么所调用的方法会自动传递给默认的磁盘:

$exists = Storage::disk('s3')->exists('file.jpg');

如果应用程序要与多个磁盘进行互操作,可使用 Storage 门面中的 disk 方法对特定磁盘上的文件进行操作:

return response()->download('file.jpg');
return response()->download('file.jpg', $name, $headers);

检索文件

get 方法可以用于检索文件的内容,此方法返回该文件的原始字符串内容。 切记,所有文件路径的指定都应该相对于为磁盘配置的「root」目录:

use Illuminate\Support\Facades\Storage;
$url = Storage::url('file.jpg');

exists 方法可以用来判断磁盘上是否存在指定的文件:

$url = Storage::temporaryUrl( 
   'file.jpg', now()->addMinutes(5)
  );

下载文件

download 方法可用于生成一个响应,强制用户的浏览器在给定路径下载文件。 download

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

Rackspace 드라이브 구성Laravel의 Flysystem 통합 패키지는 다음과 매우 잘 작동합니다. Rackspace, 그러나 프레임워크의 기본 구성 파일 filesystems.php에는 샘플 구성이 포함되어 있지 않습니다. Rackspace 파일 시스템을 구성하려면 다음 샘플 구성을 사용할 수 있습니다.

use Illuminate\Support\Facades\Storage;
$size = Storage::size('file.jpg');
🎜
🎜

캐싱

🎜특정 디스크에 대한 캐시 기능을 활성화하려면 해당 디스크의 구성 항목에 캐시를 직접 추가해야 합니다. cache 옵션은 캐시 드라이버 이름 store에 의해 구동되는 캐시 구성의 배열이어야 합니다(번역자 참고 사항: 문서 disk는 예시 코드와 같습니다. store가 일치하지 않습니다. 코드를 확인한 후 실제로는 store여야 하므로 이렇게 수정했습니다.) 초 만료이고 캐시. 접두사 접두사는 🎜
$time = Storage::lastModified('file.jpg');
🎜
🎜🎜
🎜

디스크 인스턴스 가져오기

🎜 Storage 파사드는 구성된 디스크와 상호 작용하는 데 사용할 수 있습니다. 예를 들어, 파사드에서 put 메소드를 사용하여 아바타를 기본 디스크에 저장할 수 있습니다. 처음에 disk 메서드를 사용하지 않고 Storage 파사드에서 메서드를 사용하면 호출된 메서드가 자동으로 기본 디스크에 전달됩니다. 🎜
use Illuminate\Support\Facades\Storage;
Storage::put('file.jpg', $contents);
Storage::put('file.jpg', $resource);
🎜여러 개의 디스크와 상호 운용하려면 디스크의 경우, 애플리케이션은 Storage 파사드의 disk 메소드를 사용하여 특정 디스크의 파일에 대해 작업을 수행할 수 있습니다: 🎜
use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;
// 自动为文件名生成唯一的ID...
Storage::putFile('photos', new File('/path/to/photo'));
// 手动指定文件名...
Storage::putFileAs('photos', new File('/path/to/photo'), 'photo.jpg');
🎜
🎜 🎜
🎜

파일 검색

🎜get 메소드를 사용하여 파일 내용을 검색할 수 있습니다. 이 메소드는 다음을 반환합니다. 파일의 원래 문자열 내용. 모든 파일 경로 지정은 디스크에 대해 구성된 "루트" 디렉터리를 기준으로 해야 한다는 점을 기억하세요. 🎜
Storage::putFile('photos', new File('/path/to/photo'), 'public');
🎜exists 이 방법을 사용하면 지정된 파일이 디스크에 존재하는지 여부를 확인할 수 있습니다. 🎜
Storage::prepend('file.log', 'Prepended Text');
Storage::append('file.log', 'Appended Text');
🎜
🎜🎜
🎜

파일 다운로드

🎜다운로드 방법을 사용할 수 있습니다. 응답을 생성하기 위해 사용자의 브라우저가 지정된 경로에서 파일을 다운로드하도록 강제합니다. download 메소드는 파일 이름을 메소드의 두 번째 매개변수로 허용하며, 이는 사용자가 파일을 다운로드할 때 표시되는 파일 이름을 결정합니다. 마지막으로 HTTP 배열 헤더를 메소드의 세 번째 인수로 전달할 수 있습니다: 🎜
Storage::copy('old/file.jpg', 'new/file.jpg');
Storage::move('old/file.jpg', 'new/file.jpg');
🎜🎜🎜🎜🎜🎜

파일 URL

url 메소드를 사용하여 특정 파일의 URL을 얻을 수 있습니다. local 드라이버를 사용하는 경우 일반적으로 주어진 경로에 /storage를 추가하고 해당 파일에 대한 상대 URL을 반환합니다. s3 또는 rackspace 드라이버를 사용하는 경우 전체 원격 URL이 반환됩니다. url 方法来获取给定文件的 URL。如果你使用的时 local 驱动,一般只是在给定的路径上加上 /storage 并返回一个相对的 URL 到那个文件。如果使用的是 s3 或者是 rackspace 驱动,会返回完整的远程 URL:

<?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    class UserAvatarController extends Controller{ 
    /**
     * 更新用户头像.
     *
     * @param  Request  $request
     * @return Response
     */    
   public function update(Request $request)  
     {      
       $path = $request->file('avatar')->store('avatars');        
       return $path;   
     }
  }

{note} 切记,如果使用的是 local 驱动,则所有想被公开访问的文件都应该放在 storage/app/public 目录下。此外你应该在 public/storage 创建一个符号链接 来指向 storage/app/public 目录。

临时 URLs

当使用 s3rackspace 驱动来存储文件,可以使用 temporaryUrl 方法创建给定文件的临时 URL。这个方法会接收路径和 DateTime 实例来指定 URL 何时过期:

$path = Storage::putFile('avatars', $request->file('avatar'));

自定义本地 URL 主机

如果要使用 local 驱动为存储在磁盘上的文件预定义主机,可以向磁盘配置数组添加一个 url 选项:

$path = $request->file('avatar')->storeAs('avatars', $request->user()->id);

文件元数据

除了读写文件外,Laravel 还可以提供有关文件本身的信息,例如,size 方法可用来获取文件的大小(以字节为单位):

$path = Storage::putFileAs('avatars', $request->file('avatar'), $request->user()->id);

lastModified 方法返回文件最后一次被修改的 UNIX 时间戳:

$path = $request->file('avatar')->store('avatars/'.$request->user()->id, 's3');

保存文件

put 方法可用于将原始文件内容保存到磁盘上。你也可以传递 PHP 的 resourceput

use Illuminate\Support\Facades\Storage;
Storage::put('file.jpg', $contents, 'public');

{note} 를 사용하는 경우 기억하세요. 로컬 드라이버를 사용하는 경우 공개적으로 액세스할 수 있는 모든 파일은 storage/app/public 디렉토리에 있어야 합니다. 또한 storage/app/publicpublic/storage 에 심볼릭 링크를 생성해야 합니다. > 디렉토리 .

임시 URL

🎜s3 또는 rackspace 사용 시 파일을 저장하는 드라이버인 경우 temporaryUrl 메서드를 사용하여 특정 파일에 대한 임시 URL을 생성할 수 있습니다. 이 메소드는 경로와 DateTime 인스턴스를 수신하여 URL이 만료되는 시기를 지정합니다: 🎜
$visibility = Storage::getVisibility('file.jpg');
Storage::setVisibility('file.jpg', 'public')
🎜

사용자 정의 로컬 URL 호스트< / h4>🎜local 드라이버를 사용하여 디스크에 저장된 파일에 대한 호스트를 미리 정의하려면 디스크 구성 배열에 url 옵션을 추가할 수 있습니다: 🎜
use Illuminate\Support\Facades\Storage;
Storage::delete('file.jpg');
Storage::delete(['file.jpg', 'file2.jpg']);
🎜 🎜
🎜🎜파일 메타데이터🎜🎜파일을 읽고 쓰는 것 외에도 Laravel은 다음에 대한 정보도 제공할 수 있습니다. 와 같은 파일 자체, size 메소드를 사용하여 파일 크기(바이트 단위)를 얻을 수 있습니다. 🎜
use Illuminate\Support\Facades\Storage;
Storage::disk('s3')->delete('folder_path/file_name.jpg');
🎜 lastModified 메소드는 다음의 UNIX 타임스탬프를 반환합니다. 파일이 마지막으로 수정된 시간: 🎜
use Illuminate\Support\Facades\Storage;
$files = Storage::files($directory);
$files = Storage::allFiles($directory);
🎜 🎜
🎜

파일 저장 중

🎜put 방법 원본 파일 내용을 디스크에 저장하는 데 사용할 수 있습니다. 파일 시스템에서 기본 스트림 지원을 사용하는 put 메서드에 PHP 리소스를 전달할 수도 있습니다. 대용량 파일 작업 시 이 방법을 사용하는 것이 좋습니다: 🎜
$directories = Storage::directories($directory);
// 递归...
$directories = Storage::allDirectories($directory);
🎜🎜

자동 스트리밍

Laravel이 특정 파일을 저장 위치로 자동 스트리밍하도록 하려면 putFile 또는 putFileAs 메서드를 사용할 수 있습니다. 이 메소드는 IlluminateHttpFile 또는 IlluminateHttpUploadedFile 인스턴스를 수신하고 파일을 원하는 위치로 자동 스트리밍합니다: putFileputFileAs 方法。这个方法接收 IlluminateHttpFileIlluminateHttpUploadedFile 实例,并自动将文件流式传输到你想要传输的位置:

Storage::makeDirectory($directory);

关于 putFile 方法,有些点需要注意。我们指定的是一个目录名而不是文件名。默认情况下, putFile 方法会生成一个唯一的 ID 作为文件名。文件的扩展名根据检测文件的 MIME 类型来确定。 putFile 方法会返回文件路径,以便你可以将文件路径(包括生成的文件名)存储在数据库中。

putFileputFileAs 方法也接受一个方法来指定存储文件的 「可见性」。如果你将文件存储在诸如 S3 的云盘上,并且想让该文件公开访问,则可以使用以下功能:

Storage::deleteDirectory($directory);

文件数据写入

prependappend 方法允许你在文件的开头或结尾写入数据:

composer require spatie/flysystem-dropbox

复制 & 移动文件

copy 方法用来复制文件到磁盘上的新位置,而 move 方法用来重命名或移动文件到新位置:

<?php
    namespace App\Providers;
    use Storage;use League\Flysystem\Filesystem;
    use Illuminate\Support\ServiceProvider;
    use Spatie\Dropbox\Client as DropboxClient;
    use Spatie\FlysystemDropbox\DropboxAdapter;
    class DropboxServiceProvider extends ServiceProvider{  
      /**
     * 执行注册后引导驱动.
     *
     * @return void
     */   
   public function boot()   
    {       
      Storage::extend('dropbox', function ($app, $config) {       
           $client = new DropboxClient(             
              $config['authorization_token']       
            );         
      return new Filesystem(new DropboxAdapter($client));    
          });   
       }   
    /**
     * 在容器中注册绑定.
     *
     * @return void
     */   
     public function register() 
        {     
           //   
         }
   }

文件上传

在 web 应用程序中,最常用到的文件存储的场景的地方就是上传头像,照片和文件。Laravel 上传文件的实例方法 store 可以轻松的处理文件上传存储问题。你只需要调用带有文件保存路径作为参数的 store 方法即可:

'providers' => [ 
   // ...   
  App\Providers\DropboxServiceProvider::class,
];

上例有几个点需要注意。我们指定的是目录名,而不是文件名。默认情况下, store 方法会自动生成唯一的 ID 作为文件名。文件的扩展名将通过检查文件的 MIME 类型来确定。该文件的路径和文件名会被 store 方法返回,以便后续数据库的存储使用。

你也可以使用 Storage facade 上的 putFile 方法达到和上例同样的效果:

rrreee

指定文件名

如果你不想将文件名自动分配给存储的文件,可以使用 storeAs 方法,该方法接受路径,文件名和 (可选) 磁盘作为其参数:

rrreee

你可以使用 Storage facade 上的 putFileAsrrreee

putFile 메소드 정보, 주의가 필요한 몇 가지 사항이 있습니다. 파일 이름보다는 디렉터리 이름을 지정합니다. 기본적으로 putFile 메서드는 파일 이름으로 고유 ID를 생성합니다. 파일 확장자는 탐지된 파일의 MIME 유형에 따라 결정됩니다. putFile 메서드는 파일 경로(생성된 파일 이름 포함)를 데이터베이스에 저장할 수 있도록 파일 경로를 반환합니다.
putFileputFileAs 메서드는 저장된 파일의 "가시성"을 지정하는 메서드도 허용합니다. S3와 같은 클라우드 디스크에 파일을 저장하고 해당 파일에 공개적으로 액세스할 수 있도록 하려면 다음 기능을 사용할 수 있습니다. 🎜rrreee
🎜🎜파일 데이터 쓰기 🎜🎜prependappend 메서드를 사용하면 파일의 시작이나 끝 부분에 데이터를 쓸 수 있습니다. 🎜rrreee
🎜 🎜파일 복사 및 이동🎜🎜copy 방법은 파일을 디스크의 새 위치로 복사하는 데 사용되는 반면, move 방법은 파일 이름을 바꾸거나 파일을 이동하는 데 사용됩니다. 새로운 위치: 🎜rrreee 🎜🎜
🎜

파일 업로드

🎜가장 일반적으로 웹 애플리케이션에서 사용되는 파일 저장 장면은 아바타, 사진, 파일을 업로드하는 곳입니다. 파일 업로드를 위한 Laravel의 인스턴스 메소드 store는 파일 업로드 및 저장 문제를 쉽게 처리할 수 있습니다. 파일 저장 경로를 매개변수로 사용하여 store 메소드를 호출하기만 하면 됩니다. 🎜rrreee🎜위의 예에서 주목해야 할 몇 가지 사항이 있습니다. 파일 이름이 아닌 디렉터리 이름을 지정합니다. 기본적으로 store 메소드는 고유 ID를 파일 이름으로 자동 생성합니다. 파일의 확장자는 파일의 MIME 유형을 확인하여 결정됩니다. 파일의 경로와 파일 이름은 후속 데이터베이스 저장을 위해 store 메소드에 의해 반환됩니다. 🎜🎜Storage 파사드에서 putFile 메소드를 사용하여 위의 예와 동일한 효과를 얻을 수도 있습니다: 🎜rrreee
🎜🎜파일 이름을 지정하세요🎜🎜파일 이름이 저장된 파일에 자동으로 할당되는 것을 원하지 않는 경우 경로, 파일 이름 및 ( 선택적으로) 디스크를 매개변수로 사용: 🎜 rrreee🎜 Storage 파사드에서 putFileAs 메소드를 사용하여 위의 예와 동일한 파일 작업을 수행할 수 있습니다: 🎜rrreee🎜🎜

디스크 지정

기본적으로 store 방법은 기본 디스크를 사용합니다. 다른 디스크를 지정해야 하는 경우 디스크 이름을 store 메소드의 두 번째 매개변수로 전달할 수 있습니다: store 方法使用默认磁盘。如果你需要指定其他的磁盘,可以传入磁盘名作为 store 方法的第二个参数:

rrreee

文件可见性

在 Laravel 集成的文件系统中,「可见性」是对多个平台的文件权限的抽象。文件可以声明为 publicprivate。如果一个文件被声明为 public,意味着其他人可以访问。例如,使用 S3 驱动时,就可以检索声明为 public 的文件。

你可以通过 put 方法设置文件的可见性:

rrreee

getVisibilitysetVisibility 方法可以对现存文件的可见性进行查询和设置:

rrreee

删除文件

delete 方法接收一个文件名或数组形式的文件名来删除磁盘上的文件:

rrreee

必要的话,可以指定磁盘名来删除其下的文件:

rrreee

目录

获取目录下的所有的文件

files 方法返回指定目录下的所有文件。如果你想检索指定目录(包括子目录)中所有的文件列表,可以使用 allFiles 方法:

rrreee

获取目录下的所有目录

directories 方法返回指定目录下所有目录的数组。此外,你可以使用 allDirectories 方法获取指定目录以及其子目录下所有目录的列表:

rrreee

创建目录

makeDirectory 方法会递归创建目录:

rrreee

删除目录

deleteDirectoryrrreee

파일 가시성

Laravel 통합 파일 시스템에서 "가시성"은 여러 플랫폼에서의 파일 권한을 추상화한 것입니다. 파일은 공개 또는 비공개로 선언될 수 있습니다. 파일이 공개로 선언되면 다른 사람이 해당 파일에 액세스할 수 있다는 의미입니다. 예를 들어 S3 드라이버를 사용하는 경우 public으로 선언된 파일을 검색할 수 있습니다.
put 메소드를 통해 파일의 공개 여부를 설정할 수 있습니다. 🎜rrreee🎜 getVisibilitysetVisibility 메소드는 기존 파일의 공개 여부를 쿼리할 수 있습니다. 및 설정: 🎜rrreee🎜🎜🎜
🎜

파일 삭제 중

🎜delete 메소드는 파일 이름 또는 배열 형식의 파일 이름을 받아 디스크에 있는 파일을 삭제합니다: 🎜rrreee🎜 필요한 경우 디스크 이름을 지정하여 그 아래의 파일을 삭제할 수 있습니다: 🎜rrreee🎜
🎜🎜
🎜

디렉터리

🎜🎜모든 파일 가져오기 in the 디렉토리🎜🎜 files 메소드는 지정된 디렉토리의 모든 파일을 반환합니다. 지정된 디렉터리(하위 디렉터리 포함)에 있는 모든 파일 목록을 검색하려면 allFiles 메서드를 사용할 수 있습니다: 🎜rrreee
🎜🎜디렉터리 가져오기 🎜🎜디렉터리 메서드 아래의 모든 디렉터리는 지정된 디렉터리 아래의 모든 디렉터리 배열을 반환합니다. 또한 allDirectories 메서드를 사용하여 지정된 디렉터리 및 해당 하위 디렉터리 아래의 모든 디렉터리 목록을 가져올 수 있습니다. 🎜rrreee
🎜🎜 디렉토리 생성🎜🎜 makeDirectory 메소드는 디렉토리를 반복적으로 생성합니다: 🎜rrreee
🎜🎜디렉토리 삭제🎜🎜deleteDirectory 메소드는 지정된 디렉토리와 그 아래의 모든 파일을 삭제합니다: 🎜rrreee🎜🎜🎜🎜🎜🎜

사용자 정의 파일 시스템

Laravel의 파일 시스템은 기본적으로 일부 드라이버를 제공하지만 이에 국한되지 않고 다른 파일 시스템을 위한 어댑터도 제공합니다. 이러한 어댑터를 사용하면 Lavarel 애플리케이션 내에서 사용자 정의 드라이버를 생성할 수 있습니다.

사용자 정의 파일 시스템을 설정하려면 Flysystem 어댑터가 필요합니다. 이제 커뮤니티에서 관리하는 Dropbox 어댑터를 프로젝트에 추가해 보겠습니다.

rrreee

다음으로 DropboxServiceProvider라는 서비스 공급자를 만들어야 합니다. boot 메소드에서 Storage 파사드의 extend 메소드를 사용하여 드라이버를 사용자 정의합니다: DropboxServiceProvider 的 服务提供者 。在它的 boot 方法中,使用 Storage facade 的 extend 方法自定义驱动:

rrreee

extend 方法的第一个参数是驱动的名称,第二个参数是闭包,接受 $app$config 变量。这个闭包必须返回 LeagueFlysystemFilesystem 的实例。 $config 变量包含了磁盘在 config/filesystems.php 中的位置。

接下来,在 config/app.php 配置文件中注册服务提供者:

rrreee

当你创建并注册好服务提供者后,就可以通过在 config/filesystems.php 配置文件中添加  dropboxrrreee

extend method 첫 번째 매개변수는 드라이버 이름이고, 두 번째 매개변수는 $app$config 변수를 허용하는 클로저입니다. 이 클로저는 LeagueFlysystemFilesystem의 인스턴스를 반환해야 합니다. $config 변수에는 config/filesystems.php의 디스크 위치가 포함되어 있습니다.
서비스 공급자를 생성하고 등록한 후 config/filesystems에 전달할 수 있습니다. dropbox 드라이버를 .php 구성 파일에 복사하여 사용하세요.
🎜이 글은 🎜LearnKu.com🎜 웹사이트에 처음 게시되었습니다. 🎜🎜