微信扫一扫打赏支持

黑马lavarel教程---7、文件上传

黑马lavarel教程---7、文件上传

一、总结

一句话总结:

在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的。

 

1、在lavarel中作者把文件上传看做什么?

一个简单的http请求

在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的。

 

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

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

 

3、lavarel文件上传错误状态码error的取值?

0-7,但是没有5,0表示成功。

 

4、文件上传的本质(核心思想)?

文件的移动,move_upload_file

 

5、文件上传步骤?

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

 

6、关于项目中使用路径的说明?

如果路径是给php代码使用的,则路径建议使用“./”形式;如果路径是给浏览器使用的则建议使用“/”形式。

 

 

7、获取文件上传错误提示的代码示例?

$request -> file(‘avatar’) -> getErrorMessage();

 

 

 

二、文件上传

在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的。使用时可以参考手册。

 

(1)修改表结构,添加一个字段。

ALTER TABLE `member`

ADD COLUMN `avatar`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `email`;

 

 

 

 

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

添加路由:/home/test/test14

 

 

 

 

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

 

 

 

 

创建视图页面并且添加csrf_token

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

答:

       a. 具有form标签,method必须为post,必须具备enctype属性;

       b. 至少有一个input类型为file类型;

       c. 得具备一个提交按钮;

 

 

 

 

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

【此处操作建议查看手册】  

 

 

 

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

 

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

 

 

 

 

更多的方法请访问:

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

 

思路:

         a. 先去判断文件是否正常和存在

         b. 获取相关的信息(可选)

         c. 保存文件(其实就是移动文件到新的目录)

 

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

 

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

 

 

 

 

 

 

 

 

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

如果路径是给php代码使用的,则路径建议使用“./”形式;如果路径是给浏览器使用的则建议使用“/”形式

 

为了保存的文件不被覆盖,建议在保存文件的同时对文件名进行尽量唯一的重命名:

 

 

 

 

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

 

 

 

 

将数据写入数据表:

 

 

 

数据表的结果:

 

 

 

 

如果上传出现了错误,一定要使用获取错误信息的方法:

 

 

 

$request -> file(‘avatar’) -> getErrorMessage();

 

 

 

 

 

 

 

 

 
posted @ 2019-09-21 03:47  范仁义  阅读(803)  评论(0编辑  收藏  举报