Laravel文件上传

laravel中文件上传不需要借助第三方库,而是将上传当做一个http请求来看待

数据库:

首先确保自己的数据库里有可供写入的字段。
在这里插入图片描述

路由写法:

//文件上传
    Route::match(['get','post'],'upload', 'Home\IndexController@upload');

Controller写法:

$request -> file(‘Type为file的input里的name名’)
getClientOriginalName()可以获取文件原始名称
getClientSize()可以获取文件大小,以字节为单位
getClientOriginalExtension()获取后缀名


   //文件上传
   public function upload(Request $request){
    if(Input::method()=="POST"){
        //上传
        //判断文件是否正常
        if($request -> hasFile('avatar') && $request -> file('avatar') -> isValid()){
            
            //获取文件的原始名称
            //dd($request -> file('avatar') -> getClientOriginalName());

            //获取文件的大小
            //dd($request -> file('avatar') -> getClientSize());

            //文件的移动,为防止重名将时间戳md5加密后再加随机数生成不重复的用户名
            $request -> file('avatar') -> move('./upload',md5(time() .rand(100000,999999)) . '.' . $request -> file('avatar') -> getClientOriginalExtension());
        }

    }else{
        //展示视图
        return view('Home/test/upload');
    }

   }

视图写法:

<!DOCTYPE html>
<html>
<head>
	<title>文件上传</title>
</head>
<body>

<form action="" method="post" enctype="multipart/form-data">
	<p>用户名:&nbsp;<input type="text" name="username"></p>
	<p>密码: &nbsp;<input type="password" name="password"></p>
	<p>年龄:&nbsp; <input type="text" name="age"></p>
	<p>图片: &nbsp;<input type="file" name="avatar"></p>

	{{csrf_field()}}
	<input type="submit" value="提交" ><br/>
</form>
</body>
</html>

浏览器演示:

在这里插入图片描述

/pubic/upload文件夹下:

在这里插入图片描述

这就完成了基本的文件上传操作,如果想把上传的文件路径写进数据库,可以修改Controller

   //文件上传
   public function upload(Request $request){
    if(Input::method()=="POST"){
        //上传
        //判断文件是否正常
        if($request -> hasFile('avatar') && $request -> file('avatar') -> isValid()){
            
            //获取文件的原始名称
            //dd($request -> file('avatar') -> getClientOriginalName());

            //获取文件的大小
            //dd($request -> file('avatar') -> getClientSize());

            //文件的移动,为防止重名将时间戳md5加密后再加随机数生成不重复的用户名
            $path = md5(time() .rand(100000,999999)) . '.' . $request -> file('avatar') -> getClientOriginalExtension();
            $request -> file('avatar') -> move('./upload',$path);
            //获取全部数据
            $data = $request ->all();
            //将数据路名称路径添加进去
            $data['avatar'] ='./upload/' . $path;

            $result = User::create($data);
            dd($result);

        }

    }else{
        //展示视图
        return view('Home/test/upload');
    }

   }

浏览器访问:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deeeelete

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值