zoukankan      html  css  js  c++  java
  • 黑马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();

     
  • 相关阅读:
    作业3月30号
    21、,模块与包的使用
    作业3月26号
    20、面向函数与匿名函数及模块
    作业3月25号
    19、迭代器及函数的递归调用
    作业3月24号
    06-函数
    3.17---购物车练习
    3.15---文件处理练习2
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11561249.html
Copyright © 2011-2022 走看看