Stockage de fichiers


Stockage de fichiers

Introduction à Laravel

Fournit un abstraction du système de fichiers, qui permet de bénéficier du puissant de Frank de Jonge Pack d'extension Flysystem. L'intégration du système de fichiers Laravel fournit des pilotes faciles à utiliser pour travailler avec les systèmes de fichiers locaux, Amazon S3 et le stockage cloud Rackspace. Mieux encore, basculer entre ces options de stockage est simple puisque l'API reste la même pour chaque système.

Configuration

Le fichier de configuration du système de fichiers se trouve à l'adresse config/filesystems.php . Dans ce fichier, vous pouvez configurer tous les "disques". Chaque disque représente un lecteur de stockage et un emplacement de stockage spécifiques. Des exemples de configurations pour chaque pilote pris en charge sont inclus dans les fichiers de configuration. Par conséquent, modifiez simplement la configuration pour refléter vos préférences de stockage et vos informations d'identification.

Bien sûr, vous pouvez configurer plusieurs disques selon vos besoins, et vous pouvez même faire en sorte que plusieurs disques partagent le même pilote.

Disque public

Le disque public est destiné aux fichiers qui doivent être accessibles au public. Par défaut, le disque public utilise le pilote local et stocke ces fichiers dans le répertoire storage/app/public. Pour les rendre accessibles sur le réseau, vous devez créer un lien symbolique de public/storage vers storage/app/public. Cette approche conserve les fichiers accessibles au public dans le même répertoire, de sorte que lors de l'utilisation d'un système de déploiement sans temps d'arrêt tel que Envoyer, partagez facilement ces fichiers entre différents déploiements. Vous pouvez utiliser la commande Artisan storage:link pour créer un lien symbolique : 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

Vous pouvez utiliser la commande Artisan storage:link pour créer un lien symbolique :
'ftp' => [
    'driver'   => 'ftp',    
    'host'     => 'ftp.example.com',    
    'username' => 'your-username',    
    'password' => 'your-password',    
    // 可选的 FTP 配置项...    
    // 'port'     => 21,    
    // 'root'     => '',    
    // 'passive'  => true,    
    // 'ssl'      => true,   
     // 'timeout'  => 30,
   ],
Of bien sûr, une fois un fichier stocké et le lien symbolique créé, vous pouvez utiliser la fonction d'assistance asset pour créer l'URL du fichier : 🎜
'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">🎜🎜Pilote local🎜🎜Lors de l'utilisation du pilote local, toutes les opérations sur les fichiers sont cohérentes avec le root répertoire associé. La valeur par défaut de ce répertoire est storage/app . Par conséquent, la méthode suivante stockera le fichier dans 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',
  ],
🎜🎜
🎜🎜Prérequis du pilote🎜
🎜

Package Composer

🎜Lors de l'utilisation de pilotes tels que SFTP, S3 ou Rackspace auparavant , vous deviez installer le package logiciel correspondant via Composer : 🎜
  • SFTP : league/flysystem-sftp ~1.0
  • Amazon S3 : league/ flysystem-aws-s3-v3 ~1.0
  • Rackspace : league/flysystem-rackspace ~1.0
🎜L'utilisation d'un adaptateur de cache est une amélioration Un must absolu pour la performance. Vous avez besoin d'un package supplémentaire : 🎜
  • CachedAdapter : league/flysystem-cached-adapter ~1.0
🎜

Configuration du pilote S3

🎜Les informations de configuration du pilote S3 se trouvent dans votre fichier de configuration config/filesystems.php. Ce fichier contient un exemple de tableau de configuration pour le pilote S3. Vous êtes libre de modifier cette baie avec votre propre configuration S3 et vos informations d'identification. Pour plus de commodité, ces variables d'environnement correspondent à la convention de dénomination utilisée par l'AWS CLI. 🎜
🎜

Configuration du pilote FTP

🎜L'intégration du système de fichiers de Laravel peut très bien prendre en charge FTP, mais l'exemple de configuration FTP n'est pas inclus La valeur par défaut du framework < fichier code>filesystems.php
. Vous pouvez utiliser l'exemple de configuration suivant si nécessaire : 🎜
's3' => [
    'driver' => 's3',    
   // 驱动器其他配置...    
    'cache' => [    
        'store' => 'memcached',        
        'expire' => 600,        
        'prefix' => 'cache-prefix',   
      ],
   ],
🎜🎜

Configuration du pilote SFTP

Le package d'intégration Flysystem de Laravel fonctionne très bien avec SFTP ; cependant, aucun exemple de configuration n'est inclus dans le fichier de configuration par défaut du framework filesystems.php. Si vous souhaitez configurer un système de fichiers SFTP, vous pouvez utiliser l'exemple de configuration suivant : 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',
 ],

Configuration du lecteur RackspaceLe package d'intégration Flysystem de Laravel fonctionne très bien avec Cependant, Rackspace ; le fichier de configuration par défaut du framework filesystems.php ne contient pas d'exemples de configuration. Si vous souhaitez configurer un système de fichiers Rackspace, vous pouvez utiliser l'exemple de configuration suivant :

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

Mise en cache

🎜Pour activer la fonction de cache pour un disque spécifié, vous devez ajouter cache directement à l'élément de configuration du disque. L'option cache doit être un tableau de configurations de cache, pilotées par le nom du pilote de cache store (Note du traducteur : le texte de description original du document disk > est le même que dans l'exemple de code Le store est incohérent. Après vérification du code, il devrait bien s'agir de store, donc cette modification a été effectuée), le délai d'expiration dans secondes expire, et le préfixe prefix se compose de : 🎜
$time = Storage::lastModified('file.jpg');
🎜
🎜🎜
🎜

Obtenir des instances de disque

🎜La façade Storage peut être utilisée pour interagir avec n'importe quel disque configuré. Par exemple, vous pouvez utiliser la méthode put dans la façade pour stocker un avatar sur le disque par défaut. Si vous utilisez une méthode dans la façade Storage sans utiliser initialement la méthode disk, la méthode appelée sera automatiquement passée au disque par défaut : 🎜
use Illuminate\Support\Facades\Storage;
Storage::put('file.jpg', $contents);
Storage::put('file.jpg', $resource);
🎜Si Pour interagir avec plusieurs disques, une application peut utiliser la méthode disk dans la façade Storage pour opérer sur les fichiers d'un disque spécifique : 🎜
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');
🎜
🎜 🎜
🎜

Récupération de fichiers

🎜La méthode get peut être utilisée pour récupérer le contenu d'un fichier, cette méthode renvoie le contenu de la chaîne d'origine du fichier. N'oubliez pas que toutes les spécifications de chemin de fichier doivent être relatives au répertoire « racine » configuré pour le disque : 🎜
Storage::putFile('photos', new File('/path/to/photo'), 'public');
🎜exists La méthode peut être utilisée pour déterminer si le fichier spécifié existe sur le disque : 🎜
Storage::prepend('file.log', 'Prepended Text');
Storage::append('file.log', 'Appended Text');
🎜 La méthode
🎜🎜
🎜

Téléchargement de fichiers

🎜download peut être utilisée pour générer une réponse, force le navigateur de l'utilisateur à télécharger un fichier à un chemin donné. La méthode download accepte un nom de fichier comme deuxième paramètre de la méthode, qui déterminera le nom de fichier que l'utilisateur verra lorsqu'il téléchargera le fichier. Enfin, vous pouvez passer un en-tête de tableau HTTP comme troisième argument à la méthode : 🎜
Storage::copy('old/file.jpg', 'new/file.jpg');
Storage::move('old/file.jpg', 'new/file.jpg');
🎜🎜🎜🎜🎜🎜

URL de fichiers

Vous pouvez utiliser la méthode url pour obtenir l'URL d'un fichier donné. Si vous utilisez le pilote local, vous ajoutez généralement simplement /storage au chemin donné et renvoyez une URL relative à ce fichier. Si vous utilisez le pilote s3 ou rackspace, l'URL distante complète sera renvoyée : 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} N'oubliez pas que si vous utilisez pilote local, tous les fichiers qui souhaitent être accessibles publiquement doivent être placés dans le répertoire storage/app/public. De plus, vous devez créer un lien symbolique dans public/storage pour pointer vers le storage/app/public répertoire .

URL temporaires

🎜Lors de l'utilisation de s3 ou de rackspace Pilote pour stocker les fichiers, vous pouvez utiliser la méthode temporaryUrl pour créer une URL temporaire pour un fichier donné. Cette méthode reçoit un chemin et une instance DateTime pour spécifier quand l'URL expirera : 🎜
$visibility = Storage::getVisibility('file.jpg');
Storage::setVisibility('file.jpg', 'public')
🎜

Hôte d'URL locale personnalisée< / h4>🎜Si vous souhaitez utiliser le pilote local pour prédéfinir des hôtes pour les fichiers stockés sur le disque, vous pouvez ajouter une option url au tableau de configuration du disque : 🎜
use Illuminate\Support\Facades\Storage;
Storage::delete('file.jpg');
Storage::delete(['file.jpg', 'file2.jpg']);
🎜
🎜
🎜🎜Métadonnées de fichier🎜🎜En plus de lire et d'écrire des fichiers, Laravel peut également fournir des informations sur le fichier lui-même, tel que , la méthode size peut être utilisée pour obtenir la taille du fichier (en octets) : 🎜
use Illuminate\Support\Facades\Storage;
Storage::disk('s3')->delete('folder_path/file_name.jpg');
🎜 La méthode lastModified renvoie l'horodatage UNIX de la dernière fois que le fichier a été modifié : 🎜
use Illuminate\Support\Facades\Storage;
$files = Storage::files($directory);
$files = Storage::allFiles($directory);
🎜 🎜
🎜

Stockage des fichiers

🎜Méthode put Peut être utilisée pour enregistrer le contenu du fichier original sur le disque. Vous pouvez également transmettre une ressource PHP à la méthode put, qui utilisera la prise en charge du flux sous-jacent dans le système de fichiers. Il est fortement recommandé d'utiliser cette méthode lorsque vous travaillez avec des fichiers volumineux : 🎜
$directories = Storage::directories($directory);
// 递归...
$directories = Storage::allDirectories($directory);
🎜🎜

Diffusion automatique

Si vous souhaitez que Laravel diffuse automatiquement un fichier donné vers votre emplacement de stockage, vous pouvez utiliser la méthode putFile ou putFileAs. Cette méthode reçoit une instance IlluminateHttpFile ou IlluminateHttpUploadedFile et diffuse automatiquement le fichier vers l'emplacement souhaité : 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

À propos de la méthode putFile , il y a certains points qui nécessitent une attention particulière. Nous spécifions un nom de répertoire plutôt qu'un nom de fichier. Par défaut, la méthode putFile génère un identifiant unique comme nom de fichier. L'extension du fichier est déterminée en fonction du type MIME du fichier détecté. La méthode putFile renvoie le chemin du fichier afin que vous puissiez stocker le chemin du fichier (y compris le nom du fichier généré) dans la base de données.
Les méthodes putFile et putFileAs acceptent également une méthode pour spécifier la "visibilité" du fichier stocké. Si vous stockez un fichier sur un disque cloud tel que S3 et souhaitez que le fichier soit accessible publiquement, vous pouvez utiliser la fonction suivante : 🎜rrreee
🎜🎜Écriture de données de fichier 🎜🎜 Les méthodes prepend et append permettent d'écrire des données au début ou à la fin du fichier : 🎜rrreee
🎜 🎜Copier et déplacer des fichiers🎜🎜La méthode copy est utilisée pour copier des fichiers vers un nouvel emplacement sur le disque, tandis que la méthode move est utilisée pour renommer ou déplacer des fichiers vers un nouvel emplacement : 🎜rrreee 🎜🎜
🎜

Téléchargements de fichiers

🎜Le plus souvent utilisé dans les applications Web La scène de stockage de fichiers est l'endroit où vous téléchargez des avatars, des photos et des fichiers. La méthode d'instance store de Laravel pour le téléchargement de fichiers peut facilement gérer les problèmes de téléchargement et de stockage de fichiers. Il vous suffit d'appeler la méthode store avec le chemin de sauvegarde du fichier en paramètre : 🎜rrreee🎜Il y a quelques points à noter dans l'exemple ci-dessus. Nous spécifions le nom du répertoire, pas le nom du fichier. Par défaut, la méthode store génère automatiquement un identifiant unique comme nom de fichier. L'extension du fichier sera déterminée en vérifiant le type MIME du fichier. Le chemin et le nom du fichier seront renvoyés par la méthode store pour le stockage ultérieur de la base de données. 🎜🎜Vous pouvez également utiliser la méthode putFile sur la façade Storage pour obtenir le même effet que l'exemple ci-dessus : 🎜rrreee
🎜🎜Spécifiez le nom du fichier🎜🎜Si vous ne souhaitez pas que le nom du fichier soit automatiquement attribué au fichier stocké, vous pouvez utiliser la méthode storeAs, qui accepte le chemin, le nom du fichier et ( éventuellement) disque comme paramètres : 🎜 rrreee🎜Vous pouvez utiliser la méthode putFileAs sur la façade Storage pour réaliser la même opération sur les fichiers que dans l'exemple ci-dessus : 🎜rrreee🎜🎜

Spécifier le disque

Par défaut, la méthode store utilise le disque par défaut. Si vous devez spécifier d'autres disques, vous pouvez transmettre le nom du disque comme deuxième paramètre de la méthode 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

Visibilité des fichiers

Dans le système de fichiers intégré Laravel, la « visibilité » est une abstraction des autorisations de fichiers sur plusieurs plates-formes. Les fichiers peuvent être déclarés public ou privé. Si un fichier est déclaré public, cela signifie que d'autres peuvent y accéder. Par exemple, lorsque vous utilisez le pilote S3, vous pouvez récupérer les fichiers déclarés comme public.
Vous pouvez définir la visibilité des fichiers via la méthode put : 🎜rrreee🎜Les méthodes getVisibility et setVisibility peuvent interroger la visibilité des fichiers existants et paramètres : 🎜rrreee🎜🎜🎜
🎜

Suppression de fichiers

🎜supprimer La méthode reçoit un nom de fichier ou un nom de fichier sous la forme d'un tableau pour supprimer les fichiers sur le disque : 🎜rrreee🎜 Si nécessaire, vous pouvez spécifier le nom du disque pour supprimer les fichiers en dessous : 🎜rrreee🎜
🎜🎜
🎜

Répertoire

🎜🎜Obtenir tous les fichiers dans le répertoire🎜🎜 La méthode files renvoie tous les fichiers du répertoire spécifié. Si vous souhaitez récupérer une liste de tous les fichiers d'un répertoire spécifié (y compris les sous-répertoires), vous pouvez utiliser la méthode allFiles : 🎜rrreee
🎜🎜Obtenir le répertoire Tous les répertoires sous la méthode 🎜🎜directories renvoie un tableau de tous les répertoires sous le répertoire spécifié. De plus, vous pouvez utiliser la méthode allDirectories pour obtenir une liste de tous les répertoires sous un répertoire spécifié et ses sous-répertoires : 🎜rrreee
🎜🎜 Créer un répertoire🎜🎜 La méthode makeDirectory créera récursivement le répertoire : 🎜rrreee
🎜🎜Supprimer le répertoire🎜🎜deleteDirectory supprimera le répertoire spécifié et tous les fichiers qu'il contient : 🎜rrreee🎜🎜🎜🎜🎜🎜

Système de fichiers personnalisé

Bien que le système de fichiers de Laravel fournisse des pilotes prêts à l'emploi, il ne se limite pas à ceux-ci et fournit également des adaptateurs pour d'autres systèmes de fichiers. Ces adaptateurs permettent la création de pilotes personnalisés au sein des applications Lavarel.

Pour configurer un système de fichiers personnalisé, vous avez besoin d'un adaptateur Flysystem. Ajoutons maintenant l'adaptateur Dropbox géré par la communauté au projet :

rrreee

Ensuite, vous devez créer un fournisseur de services nommé DropboxServiceProvider. Dans sa méthode boot, utilisez la méthode extend de la façade Storage pour personnaliser le pilote : DropboxServiceProvider 的 服务提供者 。在它的 boot 方法中,使用 Storage facade 的 extend 方法自定义驱动:

rrreee

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

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

rrreee

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

extend méthode Le premier paramètre est le nom du pilote et le deuxième paramètre est une fermeture qui accepte les variables $app et $config. Cette fermeture doit renvoyer une instance de LeagueFlysystemFilesystem. La variable $config contient l'emplacement du disque dans config/filesystems.php.
Après avoir créé et enregistré le fournisseur de services, vous pouvez le transmettre dans config/filesystems Ajoutez le Pilote dropbox vers le fichier de configuration .php et utilisez-le.
🎜Cet article a été publié pour la première fois sur le site 🎜LearnKu.com🎜. 🎜🎜