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添加数据到mysql数据库(PHP通过代码连接XAMPP数据库及MySQL数据库方法)
- php简单定时执行任务(php实现 master-worker 守护多进程模式的实例代码)
- php经典算法大全(php菜单/评论数据递归分级算法的实现方法)
- php教程字符串类型进阶技术教程(PHP中有关长整数的一些操作教程)
- php加密平台(PHP7实现和CryptoJS的AES加密方式互通示例AES-128-ECB加密)
- php多维数组怎么转换json(php实现的数组转xml案例分析)
- phpStudy启动失败时的解决方法 提示缺vc9运行库(phpStudy启动失败时的解决方法 提示缺vc9运行库)
- php数组实例说明(PHP检测一个数组有没有定义的方法步骤)
- php探针哪个牌子好用(php探针使用原理和技巧讲解)
- php工作原理及功能(php设计模式之适配器模式原理、用法及注意事项详解)
- php开发的主要技术(详解PHP神奇又有用的Trait)
- php系统转换的三种方式(PHP容器类的两种实现方式示例)
- php根据名称规则判断文件是否存在(PHP中上传文件打印错误错误类型分析)
- phpmysql网站开发入门与提高(PHP+MySQL+sphinx+scws实现全文检索功能详解)
- php可以一次下载几个文件(php实现大文件断点续传下载实例代码)
- php 会话session实现用户登录功能(PHP cookie,session的使用与用户自动登录功能实现方法分析)
- 白蓝色穿搭(白蓝色衣服配什么裤子)
- 天空是什么颜色(天空是什么颜色的英语)
- 高马尾扎发(高马尾扎发教程视频)
- 这里输入关键词(请手动输入关键词)
- 小说 顾瑾岚拿出一套飞行棋,别说你连飞行棋都不会哦(顾瑾岚拿出一套飞行棋)
- 金品公司 界界乐中秋限定飞行棋礼盒 露营藤篮礼盒全新上市(界界乐中秋限定飞行棋礼盒)
热门推荐
- python语言的读取图像(详解python读取image)
- php获取网页内容的几种方法(PHP实现的文件浏览器功能简单示例)
- mysql存储过程声明(MySQL存储过程的深入讲解in、out、inout)
- mysql插入数据错误代码(教你解决往mysql数据库中存入汉字报错的方法)
- nginx做图片服务器代理(使用nginx动态转换图片大小生成缩略图)
- python设置按钮(Python按钮的响应事件详解)
- C#中static静态变量的用法
- css一键布局(css多种方式实现双飞翼布局)
- ipython命令行查看文件夹(对IPython交互模式下的退出方法详解)
- 阿里云主机Windows 2008 32位 64位自助正版激活图文教程(阿里云主机Windows 2008 32位 64位自助正版激活图文教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9