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的mail函数实现发送邮件功能)
- php 十六进制转换为二进制(PHP实现的62进制转10进制,10进制转62进制函数示例)
- php防session劫持(使用SMB共享来绕过php远程文件包含的限制执行RFI的利用)
- php7.4类型属性实例详解(PHP 7.4中使用预加载的方法详解)
- php运算符与操作符(php中的buffer缓冲区用法分析)
- php中isset函数有什么功能(PHP中的empty、isset、isnull的区别与使用实例)
- phpstudymysql启动又自动停止(Win下解决phpStudy MySQL启动失败)
- php对称算法示例(php解决约瑟夫环算法实例分析)
- php性能优化的思路和步骤(FastCGI轻松搞定IIS7.5+PHP5.6.0环境)
- php支付系统(php实现的支付宝网页支付功能示例基于TP5框架)
- thinkphp5表单系统(thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例)
- php把当前网页生成pdf(php转换上传word文件为PDF的方法基于COM组件)
- php 模拟登录验证码demo(PHP 模拟登陆功能实例详解)
- thinkphp兼容dedecms(DedeCMS Error:Tag disabled:"php"的解决办法)
- php 上传图片如何压缩(PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例)
- php中function函数的用法(PHP中quotemeta函数的用法讲解)
- 智能手表兼容Windows和Android 无需充电挑战苹果(智能手表兼容Windows和Android)
- 一天一冲也算表 麦步,一款待机 21 天的智能手表体验评测(一天一冲也算表)
- 魅族智能手表充电座曝光 Type-C 接口,线座分离设计(魅族智能手表充电座曝光)
- 华为 Watch GT2 Pro 智能手表曝光,新增支持无线充电(华为WatchGT2)
- vivo首款智能手表来了 也有血氧饱和度监测,一次充电18天续航(vivo首款智能手表来了)
- 你知道 七夕 的真正含义吗(你知道七夕的真正含义吗)
热门推荐
- dedecms编辑器教程(Dedecms v5.7 编辑器默认回车键换行改为换段落的修改方法)
- python 读文件报错处理(解决python写入带有中文的字符到文件错误的问题)
- ajax 向后台传递数组参数
- mysql是自动commit吗(详解MySQL与Spring的自动提交autocommit)
- 让服务器iis支持.apk文件下载的设置方法(让服务器iis支持.apk文件下载的设置方法)
- apache服务配置详解(apache配置开启网站服务步骤)
- pythonqt入门教程(使用python实现mqtt的发布和订阅)
- python dict 操作(Python中dict和set的用法讲解)
- easyui layout 折叠后显示标题
- mysql8.0.25安装及配置超详细教程(MySQL8.0.21安装步骤及出现问题解决方案)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9