Laravel- 文件上传下载
前言
什么是 laravel?Laravel 是一个开源的、广泛使用的 PHP 框架,该平台主要用于利用 MVC 架构模式开发 web 应用程序。Laravel 是在 MIT 许可下发布的。
因此,其源代码托管在 GitHub 上。它遵循可靠且准确的语言规则,因此是可靠的 PHP 框架
如何使用 laravel 上传文件?
1.前端文件上传表单
和原生 PHP 基本一样, 需要添加给表单添加属性 enctype="multipart/form-data"。当然,在 laravel 中不要忘记添加{!!csrf_field()!!},下面是一个表单的例子
2.创建控制器处理上传的文件
上传的文件在 Laravel 中当然也可以使用原生的 PHP 函数进行处理。一般的处理步骤是
判断是否上传成功(已经成功上传到临时目录)
获取上传文件的相关信息,如文件临时的存放路径、文件名,文件类型,后缀名,文件大小等等
判断文件类型、文件大小等是否符合要求
把文件从临时文件复制到指定的路径
3.上传文件的复制
只要文件上传成功,php 会把文件先存放到一个临时目录,如上传文件符合用户的要求,那么,下一步就是把文件从临时目录复制到指定的目录
刚刚的代码中,使用了 Storage 类的静态方法复制文件
还可以使用 Request 类对象的 file 属性的 move 方法
当然,也可使用原生 PHP 函数 move_upload_file
4.通过 config/filesystem.php 配置 Storage 目录
在 laravel 中,一般使用 storage 作为文件存放的目录,如存放上传或下载的文件。此目录下的文件和目录可以直接通过 Illuminate\Support\Facades\Storage 类进行读写,为了方便 Storage 类的读写,我们编辑 config/filesystem.php 键为 disks 的数组。例如,我们如果希望把上传的文件存放在 public/upload 目录下,我们可以给 disks 数组添加一个元素
把 upload 控制器复制上传文件那句代码改为
即可把文件复制到 public/upload 目录下,如果 public 目录下不存在 upload 目录,函数会自动创建
5.对上传文件进行限制
一般,最常见的限制是对文件类型进行限制,可以通过对比文件扩展名或文件类型判断上传文件的类型是否符合要求
例如,修改前面 upload 类 upload 方法,通过扩展名对比来判断
如何使用 laravel 下载文件?
download 函数
使用 Laravel 的 Reponse 类对象的 download 方法,可以很方便的下载文件,download 方法可以用来生成强制用户浏览器下载指定路径文件的响应
此函数有三个参数,第一个参数为要下载文件的路径,必填;第二个参数接受一个文件名,它将作为用户下载的时所看见的文件名,选填;最后,你可以传递一个 HTTP 响应头数组作为该方法的第三个参数,如下:
附:laravel 常用路径函数
app_path()
app_path 函数返回 app 目录的绝对路径
base_path()
base_path 函数返回项目根目录的绝对路径
config_path()
config_path 函数返回应用配置目录的绝对路径
database_path()
database_path 函数返回应用数据库目录的绝对路径
public_path()
public_path 函数返回 public 目录的绝对路径
storage_path()
storage_path 函数返回 storage 目录的绝对路径
版权声明: 本文为 InfoQ 作者【格斗家不爱在外太空沉思】的原创文章。
原文链接:【http://xie.infoq.cn/article/be2caad2dde400bc06cdd845f】。文章转载请联系作者。
评论