黑马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();

 

最新文章

  1. 用drawRect的方式实现一个尺子
  2. Python 实现简单的 Web
  3. sql中视图的作用
  4. Jquery使select、radio某项选中
  5. 6.9 Android 优缺点
  6. 启动hadoop报192.168.1.151: Address 192.168.1.151 maps to node1, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
  7. uva624 CD   01背包+输出最优解
  8. 【easyui】--普通js中获取easyui中分页信息(page,pageSize等)
  9. Pascal Game Development with Jason McMillen
  10. ​? super T ? extends T
  11. 查看文件系统类型的Linux命令
  12. 使用ARM模板部署自动扩展的Linux VMSS(2)
  13. hdu 4090 GemAnd Prince
  14. Myeclipse新建 配置Hibernate
  15. C#数码管控件(转)
  16. 推荐一本书:清华出版的《Modbus软件开发实战指南》
  17. UOJ#335. 【清华集训2017】生成树计数 多项式,FFT,下降幂,分治
  18. 让height: 100%生效
  19. shell脚本一键安装nginx
  20. Ubuntu 14.04 配置OpenCv 2.4.9

热门文章

  1. LaTeX pdf转eps格式
  2. [转载]十六进制数的两种不同表示:0x和H
  3. 使用 java 创建你的第一个区块链(第一部分)
  4. Delphi 程序调试
  5. filepath:处理文件路径的一把好手
  6. android studio 下载sdk
  7. No training required: Exploring random encoders for sentence classification(解析)
  8. LocalDatetime 与 mybatis、json的坑
  9. NFS原理
  10. js - 执行上下文和作用域以及闭包