当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel5.1 框架文件管理操作实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-04 14:09:40 浏览: 评论:0 

本文实例讲述了Laravel5.1 框架文件管理操作,分享给大家供大家参考,具体如下:

Laravel提供了一套很好用的文件系统 方便于管理文件夹和文件,支持Amazon S3和Rackspace云存储等驱动。

1 配置

文件系统的配置文件在 config/filesyetems.php 中,且它的注释写的很清楚了,此外你可以在disks数组中创建新的disk:

  1. <?php 
  2. return [ 
  3.   /* 
  4.   |-------------------------------------------------------------------------- 
  5.   | Default Filesystem Disk 
  6.   |-------------------------------------------------------------------------- 
  7.   | 
  8.   | Here you may specify the default filesystem disk that should be used 
  9.   | by the framework. A "local" driver, as well as a variety of cloud 
  10.   | based drivers are available for your choosing. Just store away! 
  11.   | 
  12.   | Supported: "local", "ftp", "s3", "rackspace" 
  13.   | 
  14.   */ 
  15.   'default' => 'local'
  16.   /* 
  17.   |-------------------------------------------------------------------------- 
  18.   | Default Cloud Filesystem Disk 
  19.   |-------------------------------------------------------------------------- 
  20.   | 
  21.   | Many applications store files both locally and in the cloud. For this 
  22.   | reason, you may specify a default "cloud" driver here. This driver 
  23.   | will be bound as the Cloud disk implementation in the container. 
  24.   | 
  25.   */ 
  26.   'cloud' => 's3'
  27.   /* 
  28.   |-------------------------------------------------------------------------- 
  29.   | Filesystem Disks 
  30.   |-------------------------------------------------------------------------- 
  31.   | 
  32.   | Here you may configure as many filesystem "disks" as you wish, and you 
  33.   | may even configure multiple disks of the same driver. Defaults have 
  34.   | been setup for each driver as an example of the required options. 
  35.   | 
  36.   */ 
  37.   'disks' => [ 
  38.     'local' => [ 
  39.       'driver' => 'local'
  40.       'root'  => storage_path('app'), 
  41.     ], 
  42.     'ftp' => [ 
  43.       'driver'  => 'ftp'
  44.       'host'   => 'ftp.example.com'
  45.       'username' => 'your-username'
  46.       'password' => 'your-password'
  47.       // Optional FTP Settings... 
  48.       // 'port'   => 21, 
  49.       // 'root'   => '', 
  50.       // 'passive' => true, 
  51.       // 'ssl'   => true, 
  52.       // 'timeout' => 30, 
  53.     ], 
  54.     's3' => [ 
  55.       'driver' => 's3'
  56.       'key'  => 'your-key'
  57.       'secret' => 'your-secret'
  58.       'region' => 'your-region'
  59.       'bucket' => 'your-bucket'
  60.     ], 
  61.     'rackspace' => [ 
  62.       'driver'  => 'rackspace'
  63.       'username' => 'your-username'
  64.       'key'    => 'your-key'
  65.       'container' => 'your-container'
  66.       'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/'
  67.       'region'  => 'IAD'
  68.       'url_type' => 'publicURL'
  69.     ], 
  70.   ], 
  71. ]; 

一般情况下最常用的是local(本地)存储,所以特别说下,我们可以通过修改'root'来修改我们的root路径:

  1.     'local' => [ 
  2.       'driver' => 'local'
  3. //      'root'  => storage_path('app'), 在/storage/app/目录 
  4.       'root'  => public_path('uploads'), // 在public/uploads/ 目录 
  5.     ], 

2 获取硬盘实例

要进行文件管理需要那到硬盘实例,我们可以通过 Storage 门面的 disk 方法来获取,之后就可以进行我们想要的操作了:

  1. public function index() 
  2.   $disk = Storage::disk('local'); 
  3.   // 创建一个文件 
  4.   $disk->put('file1.txt''Laravel Storage'); 

3 文件操作

3.1 获取文件

  1. public function index() 
  2.   { 
  3.     // 取到磁盘实例 
  4.     $disk = Storage::disk('local'); 
  5.     // 取出文件 
  6.     $file = $disk->get('test.txt'); 
  7.     dd($file); 
  8.   } 

我们可以使用get()方法获取到文件 以字符串的形式传入文件名就行,但是需要主意:如果你要取到子目录以下的文件时需要传入路径,比如:$disk->get('subpath/.../.../.../file.txt');

3.2 判断文件是否存在

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 取出文件 
  5.   $exists = $disk->exists('image.png'); 
  6.   dd($exists);  // false 

3.3 获取文件信息

文件大小:

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 取出文件 
  5.   $size = Storage::size('/home/test.txt'); 
  6.   dd($size); // 4 

最后修改时间:

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 取出文件 
  5.   $time = Storage::lastModified('file1.txt');   // 1507701271 
  6.   $time = Carbon::createFromTimestamp($time); 
  7.   echo $time;   // 2017-10-11 05:54:31 

3.4 储存文件

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 储存文件 
  5.   $disk->put('file2.txt''file2 content'); // 新建一个文件 

3.5 Copy文件

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 拷贝文件 第一个参数是要拷贝的文件,第二个参数是拷贝到哪里 
  5.   $disk->copy('home/test.txt','rename.txt'); 

3.6 移动文件

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 拷贝文件 第一个参数是要移动的文件,第二个参数是移动到哪里 
  5.   $disk->move('file2.txt''home/file.txt'); 

3.7 在文件开头/结尾添加内容

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 在文件开头添加 
  5.   $disk->prepend('file1.txt''test prepend'); 
  6.   // 在文件末尾添加 
  7.   $disk->append('file1.txt''test append'); 

3.8 删除文件

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 删除单条文件 
  5.   $disk->delete('test.txt'); 
  6.   // 删除多条文件 
  7.   $disk->delete(['test22.txt''icon.jpg']); 

4 目录操作

4.1 取到目录下的文件

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   $directory = '/'
  5.   // 获取目录下的文件 
  6.   $files = $disk->files($directory); 
  7.   // 获取目录下的所有文件(包括子目录下的文件) 
  8.   $allFiles = $disk->allFiles($directory); 
  9.   dd($files$allFiles); 

4.2 取到子目录

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   $directory = '/'
  5.   // 获取目录下的子目录 
  6.   $directories = $disk->directories($directory); 
  7.   // 获取目录下的所有子目录(包括子目录下的子目录) 
  8.   $allDirectories = $disk->allDirectories($directory); 
  9.   dd($directories$allDirectories); 

4.3 创建目录

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 创建目录 
  5.   $disk->makeDirectory('test'); 
  6.   $disk->makeDirectory('test1/test2'); 

4.4 删除目录

  1. public function index() 
  2.   // 取到磁盘实例 
  3.   $disk = Storage::disk('local'); 
  4.   // 删除目录 
  5.   $disk->deleteDirectory('test'); 
  6.   $disk->deleteDirectory('test1/test2'); 
  7. }

Tags: Laravel5.1文件管理

分享到: