laravel的文件上传操作

一、文件上传

在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的
可以使用use Illuminate\Http\Request;实例提供的file方法或者动态属性来访问上传文件,file返回Illuminate\Http\UploadedFile;类的一个实例,该类继承自PHP标准库中提供与文件交互方法的SplFileInfo类:

$file = $request -> file(‘photo’);
$file = $request -> photo;

你可以使用hasFile方法判断文件在请求中是否存在:

if ($request -> hasFile(‘photo’)) {
//
}

验证文件是否上传成功
使用isValid方法判断文件在上传过程中是否出错:

if ($request -> file(‘photo’) -> isValid()) {
//
}

更多方法请访问:

http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html

思路:
1、先去判断文件是否正常和存在
2、获取相关的信息(可选)
3、保存文件(其实就是移动文件到新的目录)

1.1 修改表结构,添加头像字段

例:
在这里插入图片描述
效果:
在这里插入图片描述

1.2 创建添加数据的表单和路由

添加数据表单代码:
在这里插入图片描述

1.3 上传文件的保存路径

创建上传文件的保存路径(一定要在public文件下,确保浏览器能够访问。)
在这里插入图片描述
控制器代码:

public function auto_verify(Request $request) {
    
    
        // 1、接收并验证数据是否符合规则
            $this -> validate($request, [
                // 此处是一个键值数组  "验证对字段名" => "规则1|规则2|规则3..."
                'name' => 'required|min:2|max:20|unique:member', // 姓名是必须对,最短2个字符,最长20个字符,在member表里名字是唯一的
                'age' => 'required|integer|min:1|max:200', // 必须的,整型,此处min和max表示最小为1,最大为200
                                                            //,因为我们这边定义了整型,laravel会自动判断min和max为数字
                'email' => 'required|email', // 验证邮箱
            ]);
        // 2、处理文件上传
            // 判断文件是否上传正常与存在
            if ($request -> hasFile('avatar') && $request -> file('avatar') -> isValid()) {
    
    
                // 对文件对重新命名
                $name = sha1(time().rand(100000,999999)). '.' .$request -> file('avatar') -> extension();
                dump($name);
                // 文件移动操作
                $request -> file('avatar') -> move('./statics/upload', $name);
                // 存文件地址
                $path = '/statics/upload/'.$name;
            }
        // 3、通过验证写入数据库
        $data = $request -> except(['_token', 'avatar']);
        $data['avatar'] = isset($path) ? $path : '';
        $result = Member::insert($data);
        
        // 4、告知用户操作是否成功
        return $result ? 'OK' : 'Failed';

    }

在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述
在这里插入图片描述

在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

猜你喜欢

转载自blog.csdn.net/weixin_44103733/article/details/114319162