layui实现文件压缩上传_tp5+layui 实现上传大文件

本文介绍了如何使用layui和TP5框架实现大文件的分块上传,详细讲解了配置文件上传限制、nginx的client_max_body_size设置,以及通过FileReader和file.slice()实现文件分块读取和异步上传,最终成功上传了近4G的文件。
摘要由CSDN通过智能技术生成

前言:

之前所写的文件上传类通常进行考虑的是文件的类型、大小是否符合要求条件。当上传大文件时就要考虑到php的配置和服务器的配置问题。之前简单的觉得只要将php.ini中的表单上传的 大小,单脚本执行的最大时间都配 大就行了。显然这是很小白吃的做法。这样改完之后页面及服务器还是会崩溃。差不多几百兆这样吧。所以查阅资料,采用将大文件分割上传的方式来解决。这里进行记录下。

内容:

首先记录下更改文件上传大小的一些配置信息

打开php.ini

file_uploads = on       //是否允许通过HTTP上传文件的开关,默认开启

upload_tmp_dir              //临时文件储存的路径

upload_max_filesize   20M         //允许上传的文件最大值

post_max_size          22M         //通过表单POST所能上传的大小

max_execution_time 600    //单个PHP页面允许运行的最大时间

max_input_time         600        //单个PHP页面接收数据所需的最大时间,默认60秒

memory_limit              256M       //单个PHP页面执行过程中可占用的最大内存,默认8M

通过更改上述的配置就可以调整允许文件上传的大小。(有的还需要调整服务器的一些配置)

补充:413错误如果服务器是nginx的话,需要更改配置nginx_conf 中的client_max_body_size 24M,设置接收客户端发送过来包的最大值。记得放在http里,重启服务器,用restart,不要用reload。

贴下具体修改nginx配置的博文:http://blog.51cto.com/13673885/2299771。

接着开始实现文件的分割上传。

文件通过HTML的input标签的file来选择文件上传。通过H5新对象FileReader。就像字面上的意思一样FileRaeder对象就是一个读取本地文件的对象。FileReader对象可以将本地文件读取后以base64位的编码返回。(具体有关FileReader对象的使用,请自行百度,或者阅读以下博文,写的很具体。博文连接:https://www.cnblogs.com/hhhyaaon/p/5929492.html)

实际开发经历:

第一次尝试

通过input file标签来选择文件

采用FileReader对象对文件进行读取

通过ajax异步将文件的base64编码发送给服务端

服务端接收后对编码进行解码并保存到文件中。

测试结果失败,当文件过大时所编码的长度也越长,通过ajax异步提交参数的最大上线为8000个字节。

第二次尝试

在第一次的基础上对所获取到的base64编码进行分割上传

将所获取的base64编码字符串分成几份并进行编号,在循环调用ajax进行发送

服务端接收到后对数据进行解码,以编号进行命名

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值