黑马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();
黑马lavarel教程---7、文件上传的更多相关文章
- Web攻防系列教程之文件上传攻防解析(转载)
Web攻防系列教程之文件上传攻防解析: 文件上传是WEB应用很常见的一种功能,本身是一项正常的业务需求,不存在什么问题.但如果在上传时没有对文件进行正确处理,则很可能会发生安全问题.本文将对文件上传的 ...
- 文件上传利器SWFUpload入门简易教程
凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...
- 【ASP.NET Web API教程】5.3 发送HTML表单数据:文件上传与多部分MIME
原文:[ASP.NET Web API教程]5.3 发送HTML表单数据:文件上传与多部分MIME 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面 ...
- PHP高级教程-文件上传
PHP 文件上传 通过 PHP,可以把文件上传到服务器. 本章节实例在 test 项目下完成,目录结构为: test |-----upload # 文件上传的目录 |-----form.html # ...
- Spring MVC文件上传教程 commons-io/commons-uploadfile
Spring MVC文件上传教程 commons-io/commons-uploadfile 用到的依赖jar包: commons-fileupload 1.3.1 commons-io 2.4 基于 ...
- 【转】NodeJS教程--基于ExpressJS框架的文件上传
本文是翻译的一篇文章,原文地址:Handle File Uploads in Express (Node.js). 在NodeJS发展早期上传文件是一个较难操作的功能,随后出现了formidable. ...
- SpringMVC+ajax文件上传实例教程
原文地址:https://blog.csdn.net/weixin_41092717/article/details/81080152 文件上传文件上传是项目开发中最常见的功能.为了能上传文件,必须将 ...
- 【技术博客】Postman接口测试教程 - 环境、附加验证、文件上传测试
Postman接口测试教程 - 环境.附加验证.文件上传测试 v1.0 作者:ZBW 前言 继利用Postman和Jmeter进行接口性能测试之后,我们发现Postman作为一款入门容易的工具,其内置 ...
- SpringBoot图文教程4—SpringBoot 实现文件上传下载
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...
随机推荐
- 机器学习-正则化(岭回归、lasso)和前向逐步回归
机器学习-正则化(岭回归.lasso)和前向逐步回归 本文代码均来自于<机器学习实战> 这三种要处理的是同样的问题,也就是数据的特征数量大于样本数量的情况.这个时候会出现矩阵不可逆的情况, ...
- 03 Redis发布与订阅
以qq群的公告,单个发布者,多个收听者为例 发布/订阅 实验 发布订阅的命令 PUBLISH channel msg 将信息 message 发送到指定的频道 channel SUBSCRIBE ch ...
- python之time
1. 获取当前时间戳 # -*- coding: UTF- -*- import time print(time.time()) # 输出:1540693297.94459 2. 将时间戳格式化为本地 ...
- N4语法
第一期 授受关系 这里讲的授受关系是指“物的收受”也就是前后两个主体之前的“物的收受”. 请看以下三个基本句型:(从接收者B来分析) 1. AはBに-を あげる(平辈.晚辈) (A给 ...
- shell脚本if判断语句报错[: too many arguments的两种原因
shell脚本,if判断语句报错[: too many arguments 我遇到过两种情况: 1.第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断 ...
- linux进程间的通信方式
linux进程间的通信 进程间的通信就是不同的进程之间传播或交换信息,进程的用户空间是互相独立,进程之间可以利用系统空间交换信息. 管道 允许将一个进程的标准输出和另一个进程的标准输入连接在一起,主要 ...
- 关于Java中线程取值并返回的方法
如何让一个线程不断跑起来,并且在取到值的时候能返回值而线程能继续跑呢? 我们都知道可以用Callable接口获得线程的返回值,或者触发事件监听来操作返回值,下面我将介绍另一种方法. public ab ...
- CentOS 7 中英文桌面安装步骤详细图解
https://www.cnblogs.com/haoliyou/p/7694868.html
- centos后台运行程序
putty等软件运行,python程序:python p.py 只要一关闭putty, 程序就结束.如何让退出终端或关闭终端电脑,还能让程序在服务器后台运行Python. 关键的命令:nohup ...
- hiho #1062 : 最近公共祖先·一(树,最近祖先)
#1062 : 最近公共祖先·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在 ...