多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 文件与目录操作 ### 介绍 借助Laravel和出色的[Flysystem](https://github.com/thephpleague/flysystem)PHP软件包,Oct提供了强大的文件系统抽象。Flysystem集成提供了易于使用的驱动程序,可用于处理本地文件系统,Amazon S3和Rackspace Cloud Storage。更好的是,在这些存储选项之间切换非常简单,因为每个系统的API都相同。 ### [](https://octobercms.com/docs/services/filesystem-cdn#configuration)组态 文件系统配置文件位于`config/filesystems.php`。在此文件中,您可以配置所有“磁盘”。每个磁盘代表一个特定的存储驱动程序和存储位置。配置文件中包含每个受支持的驱动程序的示例配置。因此,只需修改配置以反映您的存储首选项和凭据。 当然,您可以配置任意数量的磁盘,甚至可能有多个使用相同驱动程序的磁盘。 #### 当地司机 使用`local`驱动程序时,请注意所有文件操作都相对于`root`配置文件中定义的目录。默认情况下,此值设置为`storage/app`目录。因此,以下方法会将文件存储在`storage/app/file.txt`: ~~~ Storage::disk('local')->put('file.txt', 'Contents'); ~~~ #### 其他驱动程序先决条件 在使用S3或Rackspace驱动程序之前,您需要安装[Drivers plugin](http://octobercms.com/plugin/october-drivers)。 ### [](https://octobercms.com/docs/services/filesystem-cdn#basic-usage)基本用法 ### [](https://octobercms.com/docs/services/filesystem-cdn#obtaining-disk-instances)获取磁盘实例 该`Storage`门面可以用来与您的任何配置的磁盘进行交互。例如,您可以使用`put`外观上的方法将化身存储在默认磁盘上。如果在`Storage`不首先调用`disk`方法的情况下在外观上调用方法,则该方法调用将自动传递到默认磁盘: ~~~ $user = User::find($id); Storage::put( 'avatars/'.$user->id, file_get_contents(Request::file('avatar')->getRealPath()) ); ~~~ 使用多个磁盘时,可以使用外观`disk`上的方法访问特定磁盘`Storage`。当然,您可以继续链接方法以在磁盘上执行方法: ~~~ $disk = Storage::disk('s3'); $contents = Storage::disk('local')->get('file.jpg') ~~~ ### [](https://octobercms.com/docs/services/filesystem-cdn#retrieving-files)检索文件 该`get`方法可以用于检索给定文件的内容。该文件的原始字符串内容将通过以下方法返回: ~~~ $contents = Storage::get('file.jpg'); ~~~ 该`exists`方法可用于确定磁盘上是否存在给定文件: ~~~ $exists = Storage::disk('s3')->exists('file.jpg'); ~~~ #### 文件元信息 该`size`方法可用于获取文件大小(以字节为单位): ~~~ $size = Storage::size('file1.jpg'); ~~~ 该`lastModified`方法返回上次修改文件的UNIX时间戳: ~~~ $time = Storage::lastModified('file1.jpg'); ~~~ ### [](https://octobercms.com/docs/services/filesystem-cdn#storing-files)储存档案 该`put`方法可以用于在磁盘上存储文件。您也可以将PHP传递`resource`给该`put`方法,该方法将使用Flysystem的基础流支持。在处理大文件时,强烈建议使用流: ~~~ Storage::put('file.jpg', $contents); Storage::put('file.jpg', $resource); ~~~ 该`copy`方法可用于将现有文件复制到磁盘上的新位置: ~~~ Storage::copy('old/file1.jpg', 'new/file1.jpg'); ~~~ 该`move`方法可用于将现有文件移动到新位置: ~~~ Storage::move('old/file1.jpg', 'new/file1.jpg'); ~~~ #### 在文件之前/之后 该`prepend`和`append`方法,让你轻松地插入在文件的开头或结尾的内容: ~~~ Storage::prepend('file.log', 'Prepended Text'); Storage::append('file.log', 'Appended Text'); ~~~ ### [](https://octobercms.com/docs/services/filesystem-cdn#deleting-files)删除档案 该`delete`方法接受单个文件名或文件数组以从磁盘中删除: ~~~ Storage::delete('file.jpg'); Storage::delete(['file1.jpg', 'file2.jpg']); ~~~ ### [](https://octobercms.com/docs/services/filesystem-cdn#directories)目录 #### 获取目录中的所有文件 该`files`方法返回给定目录中所有文件的数组。如果要检索给定目录中所有文件的列表,包括所有子目录,则可以使用以下`allFiles`方法: ~~~ $files = Storage::files($directory); $files = Storage::allFiles($directory); ~~~ #### 获取目录中的所有目录 该`directories`方法返回给定目录中所有目录的数组。此外,您可以使用该`allDirectories`方法来获取给定目录内的所有目录及其所有子目录的列表: ~~~ $directories = Storage::directories($directory); // Recursive... $directories = Storage::allDirectories($directory); ~~~ #### 建立目录 该`makeDirectory`方法将创建给定目录,包括任何所需的子目录: ~~~ Storage::makeDirectory($directory); ~~~ #### 删除目录 最后,`deleteDirectory`可以使用删除磁盘中的目录,包括其所有文件: ~~~ Storage::deleteDirectory($directory); ~~~