如何编写PHP实现大文件分片上传的代码片段?
- 内容介绍
- 文章标签
- 相关推荐
本文共计548个文字,预计阅读时间需要3分钟。
服务端为什么不能直接传输大文件?这与php.ini中的几个配置有关:
+ upload_max_filesize=2M / PHP最大能接收的文件大小+ post_max_size=8M / PHP能接收的最大POST值+ memory_limit=128M / 内存上限+ max_execution_time=30 / 最大执行时间
服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关
upload_max_filesize = 2M //PHP最大能接受的文件大小
post_max_size = 8M //PHP能收到的最大POST值'
memory_limit = 128M //内存上限
max_execution_time = 30 //最大执行时间
当然不能简单粗暴的把上面几个值调大,否则服务器内存资源吃光是迟早的问题。
解决思路
好在HTML5开放了新的FILE API,也可以直接操作二进制对象,我们可以直接在浏览器端实现文件切割,按照以前的做法就得用Flash的方案,实现起来会麻烦很多。
JS思路
1.监听上传按钮的onchange事件
2.获取文件的FILE对象
3.把文件的FILE对象进行切割,并且附加到FORMDATA对象中
4.把FORMDATA对象通过AJAX发送到服务器
5.重复3、4步骤,直到文件发送完。
本文共计548个文字,预计阅读时间需要3分钟。
服务端为什么不能直接传输大文件?这与php.ini中的几个配置有关:
+ upload_max_filesize=2M / PHP最大能接收的文件大小+ post_max_size=8M / PHP能接收的最大POST值+ memory_limit=128M / 内存上限+ max_execution_time=30 / 最大执行时间
服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关
upload_max_filesize = 2M //PHP最大能接受的文件大小
post_max_size = 8M //PHP能收到的最大POST值'
memory_limit = 128M //内存上限
max_execution_time = 30 //最大执行时间
当然不能简单粗暴的把上面几个值调大,否则服务器内存资源吃光是迟早的问题。
解决思路
好在HTML5开放了新的FILE API,也可以直接操作二进制对象,我们可以直接在浏览器端实现文件切割,按照以前的做法就得用Flash的方案,实现起来会麻烦很多。
JS思路
1.监听上传按钮的onchange事件
2.获取文件的FILE对象
3.把文件的FILE对象进行切割,并且附加到FORMDATA对象中
4.把FORMDATA对象通过AJAX发送到服务器
5.重复3、4步骤,直到文件发送完。

