php上传文件的要求(PHP大文件分块上传功能实例详解)
类别:编程学习 浏览量:1469
时间:2022-01-14 02:26:45 php上传文件的要求
PHP大文件分块上传功能实例详解本文实例讲述了PHP大文件分块上传功能。分享给大家供大家参考,具体如下:
前端代码
使用file.slice将文件进行分割,然后分别进行异步上传。
|
<!DOCTYPE html> <html lang= "zh-cn" > <head> <meta charset= "utf-8" > <meta http-equiv= "X-UA-Compatible" content= "IE=edge" > <meta name= "viewport" content= "width=device-width, initial-scale=1" > <title><%= title %></title> <!-- zui --> <link rel= "stylesheet" href= "http://zui.sexy/dist/css/zui.min.css" rel= "external nofollow" > </head> <body> <li class= "container" style= "margin-top: 30px;" > <form class= "form-inline" method= "post" enctype= "multipart/form-data" > <li class= "form-group" > <input type= "file" id= "fileBig" class= "form-control" > </li> <button type= "submit" class= "btn btn-primary" >提交</button> </form> </li> <!-- ZUI Javascript 依赖 jQuery --> <script src= "http://zui.sexy/assets/jquery.js" ></script> <!-- ZUI 标准版压缩后的 JavaScript 文件 --> <script src= "http://zui.sexy/dist/js/zui.min.js" ></script> <script type= "text/javascript" > $( 'form' ).submit( function () { let file = $( ":file" )[0].files[0]; let fileName = file.name; let fileSize = file.size; console.log( 'fileSize' ,fileSize); let blockSize = 0.9*1024*1024; let num = Math.ceil(fileSize/blockSize); let start = 0; let end = 0; for (let i=1;i<=num;i++){ end = blockSize*i; if (end > fileSize){ end = fileSize; } let block = file.slice(start,end); start = end; let fd = new FormData(); fd.append( 'block' ,block); fd.append( 'name' ,fileName); fd.append( 'total' ,num); fd.append( 'index' ,i); $.ajax({ url: "upload.php" , type: "POST" , data:fd, async: true , processData: false , contentType: false , success:(res)=>{ console.log( 'res_' +i+ ":" ); console.log(res); } }) } return false ; }); </script> </body> </html> |
后端代码
在所有的文件上传成功之后,合并生成原来的大文件
|
<?php $name = $_POST [ 'name' ]; $index = $_POST [ 'index' ]; $total = $_POST [ 'total' ]; echo "name:" . $name .PHP_EOL; echo "index:" . $index .PHP_EOL; echo "total:" . $total .PHP_EOL; move_uploaded_file( $_FILES [ 'block' ][ 'tmp_name' ], 'upload/' . $name . "_" . $index ); $list = scandir( 'upload' ); $num = count ( $list )-2; echo "cur_num:" . $num .PHP_EOL; if ( $num == $total ){ echo "upload done" .PHP_EOL; echo $cmd = "cat upload/'{$name}_'* > upload/'{$name}'" ; shell_exec( $cmd ); } |
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/koastal/article/details/78984569
您可能感兴趣
- php脚本通过文件路径批量上传文件(php遍历目录下文件并按修改时间排序操作示例)
- php博客开发短信原理(PHP如何实现阿里云短信sdk灵活应用在项目中的方法)
- phparray函数的用法(php array_chunk函数用法与注意事项)
- php常用执行函数(PHP自动载入类文件函数__autoload的使用方法)
- php防session劫持(使用SMB共享来绕过php远程文件包含的限制执行RFI的利用)
- php怎么实现邮件发送(使用php的mail函数实现发送邮件功能)
- linux安装php目录路径修改(ubuntu环境下的php相关路径与修改方法)
- python核心编程内容(顶级大神Linux,Python,Go,PHP之父谁是夜猫子?用Python揭秘!)
- php定时执行PHP(Cpanel下Cron Jobs定时执行PHP的方法)
- thinkphp5.1 执行流程(Thinkphp5.0 框架的请求方式与响应方式分析)
- phpstudy怎么配置php环境(使用phpStudy搭建php环境及安装各种php程序实战教程)
- dedecms怎么调用标签(dedecms直接访问域名不能跳转到index.php)
- phpstudy8.0使用教程视频(phpstudy v8.1 Apache伪静态配置图文教程)
- php网页采集教程交流(PHP实现的抓取小说网站内容功能示例)
- phpstudy如何部署在linux上(phpstudy linux面板CC防护功能使用教程)
- php设计模式如何实现(php模式设计之观察者模式应用实例分析)
- 刚红就耍大牌,《琉璃》角色滤镜碎一地,心疼工作人员(琉璃角色滤镜碎一地)
- 袁冰妍郑业成这对可以处,有脸红情话他们是真的敢说(袁冰妍郑业成这对可以处)
- 《祝卿好》台词又土又甜,就喜欢这么直接的恋爱(祝卿好台词又土又甜)
- 大女主 汤唯垂青电视圈,搭档朱亚文出演《大明皇妃孙若微传》(汤唯垂青电视圈)
- 红色代表什么(红色代表什么情感和含义)
- 高中数学题(高中数学题型总结及解题方法)
热门推荐
- python转图片为字符图(Python实现图片转字符画的代码实例)
- pythonflask编写接口(Python Flask框架模板操作实例分析)
- oracle for update nowait和for update区别
- nginx常见错误码(Nginx常见的错误配置举例)
- vue界面自动生成(Vue中实现3D标签云的详细代码)
- centos怎样开启tomcat(Centos8.2云服务器环境安装Tomcat8.5的详细教程)
- centos6.5 32位安装gitlab(centos7安装部署gitlab服务器的方法)
- 宝塔如何通过ip访问网站(宝塔面板如何禁止“服务器IP地址”打开网站?)
- php如何将数组清空(PHP实现数组向任意位置插入,删除,替换数据操作示例)
- mysqlorder工作原理(详解Mysql order by与limit混用陷阱)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9