教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 Laravel 5.1对文件进行存储、移动和删除操作操作实例

Laravel 5.1对文件进行存储、移动和删除操作操作实例

发布时间:2016-10-03   编辑:jiaochengji.com
教程集为您提供Laravel 5.1对文件进行存储、移动和删除操作操作实例等资源,欢迎您收藏本站,我们将为您提供最新的Laravel 5.1对文件进行存储、移动和删除操作操作实例资源
Laravel 5.1有自己的文件系统了我们可以直接使用Laravel 5.1文件系统来对文件的操作了,下面来看一篇对文件操作,移动,存储及删除的例子。

Laravel 基于 Flysystem 提供了强大的文件系统对文件进行存储和删除,该文件系统和缓存一样,支持多种驱动,这些驱动包括本地驱动、FTP、Amazon S3以及 Rackspace,在这些驱动之上提供了统一的API方便随时切换驱动而不需要修改任何业务逻辑代码。

既然API方法一致,那么这里作为示例,我们使用本地驱动来演示如何使用文件系统API对文件进行存储和删除。

1、配置

文件系统配置位于config/filesystems.php,默认配置如下:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy9133')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy9133>

return [

    'default' => 'local',
    'cloud' => 's3',
    'disks' => [

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

        'ftp' => [
            'driver' => 'ftp',
            'host' => 'ftp.example.com',
            'username' => 'your-username',
            'password' => 'your-password',
        ],

        's3' => [
            'driver' => 's3',
            'key' => 'your-key',
            'secret' => 'your-secret',
            'region' => 'your-region',
            'bucket' => 'your-bucket',
        ],

        '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',
        ],

    ],

];

</td></tr></table>

从配置文件可以看出,Laravel默认的文件系统驱动是local,也就是本地驱动,默认的云存储是Amazon S3。我们可以修改这些默认配置。

所有支持的驱动及驱动详细配置定义在disks配置项中,在local驱动中使用root配置指定文件系统的根路径,即storage/app,这意味着如果使用local驱动,所有文件都会存放在该目录下。如果使用ftp驱动需要指定FTP主机、用户名和登录密码,此外还有一些额外配置,比如端口号、超时时间、加密方式等。同理使用s3或者rackspace也要填写相应的配置项。

由于我们使用local驱动,所以这里我们保持该配置文件不变即可。

2、基本使用

下面我们使用文件系统演示如何上传文件、获取文件、以及删除文件,我们将使用Storage门面提供的方法进行操作。

上传文件/获取文件

这里我们基于 HTTP 请求实例教程#上传文件这篇教程并对其上传方法postFileupload进行修改:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy9348')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy9348>

public function postFileupload(Request $request){
    //判断请求中是否包含name=file的上传文件
    if(!$request->hasFile('file')){
        exit('上传文件为空!');
    }
    $file = $request->file('file');
    //判断文件上传过程中是否出错
    if(!$file->isValid()){
        exit('文件上传出错!');
    }
    $newFileName = md5(time().rand(0,10000)).'.'.$file->getClientOriginalExtension();
    $savePath = 'test/'.$newFileName;
    $bytes = Storage::put(
        $savePath,
        file_get_contents($file->getRealPath())
    );
    if(!Storage::exists($savePath)){
        exit('保存文件失败!');
    }
    header("Content-Type: ".Storage::mimeType($savePath));
    echo Storage::get($savePath);
}

</td></tr></table>

在上传处理逻辑中我们先保存文件到指定位置,然后判断保存后的文件是否存在,如果不存在则表明上传失败,否则显示上传文件内容。

比如我们测试上传图片,访问http://laravel.app:8000/request/fileupload,点击“选择文件”上传一张图片

您可能感兴趣的文章:
Laravel 5.1对文件进行存储、移动和删除操作操作实例
Laravel 5.1框架Redis 的安装配置及基本使用教程
Laravel实现找回密码及密码重置的例子
搭建php Laravel框架教程详解
Laravel内置组件实现注册登录的例子
Outlook.com邮箱“筛选、整理、移至、即时操作”功能实用教程
Laravel 5.2数据库安装配置及简单例子
Laravel使用支付宝进行支付开发实例
swoole laravel 区别
php框架laravel excel包使用教程介绍

[关闭]
~ ~