PHP通过Laravel巧妙实现超大文件上传

时间:2024-04-09 16:06:28

PHP通过Laravel巧妙实现超大文件上传
前言
  在PHP开发中有的时候会遇到需要上传比较大的文件到服务器,在这相信很多小伙伴们都会抓头,不知道怎么解决,在这里小编将讲解怎么通过Laravel来实现这个功能。

正文
  我们知道,在以前,文件上传采用的是直接传整个文件的方式,这种方式对付一些小文件是没有问题的。而当需要上传大文件时,此种方式不仅操作繁琐,需要修改web服务器和后端语言的配置,而且会大量占用服务器的内存,导致服务器内存吃紧,严重的甚至传输超时或文件过大无法上传。很显然,普通的文件上传方式已无法满足现在越来越高的要求。
  随着技术的发展,如今我们可以利用HTML5的分块上传技术来轻松解决这个困扰,通过将大文件分割成小块逐个上传再拼合,来降低服务器内存的占用,突破服务器及后端语言配置中的上传大小限制,可上传任意大小的文件,同时也简化了操作,提供了直观的进度显示。
  AetherUpload-Laravel是一个提供超大文件上传的Laravel扩展包,支持分组配置、断线续传、秒传、分布式部署等功能,简单易用,满足多数人的主流需求。无感知化的设计理念,可实现由扩展自动接管上传和访问请求,开发者专注于业务,无需关心上传流程,无需编写适配代码,几乎开箱即用,节省大量开发时间。
  主要功能特性有:百分比进度条、文件类型和大小限制、分组配置 、自定义中间件、上传完成事件 、同步上传、断线续传、文件秒传、分布式部署。
  解析一下上传过程,首先发送预处理请求preprocess,用以检查是否可秒传,进行文件大小和类型的过滤,预创建指针头文件和资源文件。然后发送上传分块请求uploading,开始文件分块上传流程,同时开始合并文件,直到最后一个分块上传完毕后,返回完整文件的保存地址,并将此文件加入秒传记录中。
  安装过程相当简单,无需任何额外配置,仅需30秒时间就可以使你的应用支持超大文件上传。
  秒传示例:
  PHP通过Laravel巧妙实现超大文件上传
  在终端内切换到你的laravel项目根目录,执行composer require peinhu/aetherupload-laravel ~2.0(Laravel 5.5+请跳过)在config/app.php的providers数组中添加一行AetherUpload\AetherUploadServiceProvider::class,执行php artisan aetherupload:publish来发布一些文件和目录在浏览器访问http://域名/aetherupload可到达示例页面。
结尾
  通过本文的学习各位小盆友们对于PHP如何通过Laravel来实现大文件的上传有了一个初步的了解?是不是感觉很神奇,接下来努力吧小伙伴们。