laravel文件上传

文件上传

标签(空格分隔): 未分类

文件上传

目前php的各大常用框架都为我们直接封装好了文件上传的相关代码,不用再劳心劳力的自己写,使用起来也大同小异,省心不少

###(1)修改表结构,添加一个字段
ALTER TABLE member
ADD COLUMN avatar varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER email;

(2)创建添加数据的表单和路由

添加路由:/home/test/test14

创建路由:Route::any(‘home/test14’,‘Home\TestController@test14’);

创建展示视图的方法并且展示视图

方法:public function test14(){
//判断请求的内容
if (Input::method()==‘POST’){
}else{
return view(‘home.test14’);
}
}

创建视图页面并且添加csrf_token

`

文件上传

姓名:

年龄:

邮箱:

头像:

{{csrf_field()}}

`

回顾:要想表单能够上传(此处不考虑异步方式),则表单应该具备哪些要求?

a. 具有form标签,method必须为post,必须具备enctype属性;
b. 至少有一个input类型为file类型;
c.得具备一个提交按钮;

(3)在控制器中,添加上传业务处理逻辑(请求)

关于上传错误状态码error的取值:0-7,但是没有5,0表示成功。

问题:请你说出文件上传的本质(核心思想)?文件的移动,move_upload_file

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

获取文件的方式:既可以通过file方法来获取也可以通过动态属性来获取,二选一。

更多的方法请访问:
http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html

案例:验证

//判断文件是否正常
if (request->hasFile(‘avatar’) && request->file(‘avatar’)->isValid()){
//获取文件的原始名称
dd( r e q u e s t − > f i l e ( ′ a v a t a r ′ ) − > g e t C l i e n t O r i g i n a l N a m e ( ) ) ; d d ( request->file('avatar')->getClientOriginalName()); dd( request>file(avatar)>getClientOriginalName());dd(request->file(‘avatar’)->getClienSize());//返回是字节
}

(4)创建上传文件的保存路径

创建上传文件的保存路径:

放在站点根目录public下

关于项目中使用路径的说明:

如果路径是给php代码使用的,则路径建议使用“./”形式;
如果路径是给浏览器使用的则建议使用“/”形式。
为了保存的文件不被覆盖,建议在保存文件的同时对文件名进行尽量唯一的重命名:

案例:上传的实现

public function test14(Request $request){ //判断请求的内容 if (Input::method()=='POST'){ //判断文件是否正常 if (request->hasFile('avatar') && request->file('avatar')->isValid()){ // 获取文件的原始名称 // dd(request->file('avatar')->getClientOriginalName()); // 移动文件 request->file('avatar')->move('./uploads',md5(time().rand(100000,999999)).".".request->file('avatar')->getClientOriginalExtension()); } }else{ return view('home.test14'); } }

(5)写入数据库

注意:如果使用的是create方法添加数据到数据表中,则这里还要修改一下模型里面的一个fillable属性,代表允许插入到数据库的字段

案例:写入数据库

1.在模型中添加avatar记录

2.将数据写入到数据库

if (request->hasFile(‘avatar’) && request->file(‘avatar’)->isValid()){
// 获取文件的原始名称
// dd(request->file(‘avatar’)->getClientOriginalName());
// 移动文件
path=md5(time().rand(100000,999999)).".".request->file(‘avatar’)->getClientOriginalExtension();
request->file(‘avatar’)->move(’./uploads’,path);
//获取全部的数据
data=request->all();
//将数据添加到数组
data[‘avatar’]=’./uploads’.path;
rst=Member::create(data);
dd(rst);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值