PHP大文件切割上传并带进度条功能示例


Posted in PHP onJuly 01, 2019

本文实例讲述了PHP大文件切割上传并带进度条功能。分享给大家供大家参考,具体如下:

前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能。

项目结构图:

PHP大文件切割上传并带进度条功能示例

14-slice-upload-fix.html文件:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>大文件切割上传带进度条</title>
  <link rel="stylesheet" href="">
<script>
var xhr = new XMLHttpRequest();//xhr对象
var clock = null;
function selfile(){
  clock = window.setInterval(sendfile,1000);
}
var sendfile = (function (){
  const LENGTH = 1024 * 1024 * 10;//每次上传的大小
  var start = 0;//每次上传的开始字节
  var end = start + LENGTH;//每次上传的结尾字节
  var sending = false;//表示是否正在上传
  var fd = null;//创建表单数据对象
  var blob = null;//二进制对象
  var percent = 0;
  return (function (){
    //如果有块正在上传,则不进行上传
    if(sending == true){
      return;
    }
    var file = document.getElementsByName('video')[0].files[0];//文件对象
    //如果sta>file.size,就结束了
    if(start > file.size){
      clearInterval(clock);
      return;
    }
    blob = file.slice(start,end);//根据长度截取每次需要上传的数据
    fd = new FormData();//每一次需要重新创建
    fd.append('video',blob);//添加数据到fd对象中
    up(fd);
    //重新设置开始和结尾
    start = end;
    end = start + LENGTH;
    sending = false;//上传完了
    //显示进度条
    percent = 100 * start/file.size;
    if(percent>100){
      percent = 100;
    }
    document.getElementById('bar').style.width = percent + '%';
    document.getElementById('bar').innerHTML = parseInt(percent)+'%';
  });
})();
function up(fd){
  xhr.open('POST','13-slice-upload.php',false);
  xhr.send(fd);
}
</script>
<style>
  #progress{
    width:500px;
    height:30px;
    border:1px solid green;
  }
  #bar{
    width:0%;
    height:100%;
    background-color: green;
  }
</style>
</head>
<body>
  <h1>大文件切割上传带进度条</h1>
  <div id="progress">
    <div id="bar"></div>
  </div>
  <input type="file" name="video" onchange="selfile();" />
</body>
</html>

13-slice-upload.php文件:

<?php
/**
 * 大文件切割上传,把每次上传的数据合并成一个文件
 * @author webbc
 */
$filename = './upload/upload.wmv';//确定上传的文件名
//第一次上传时没有文件,就创建文件,此后上传只需要把数据追加到此文件中
if(!file_exists($filename)){
  move_uploaded_file($_FILES['video']['tmp_name'],$filename);
}else{
  file_put_contents($filename,file_get_contents($_FILES['video']['tmp_name']),FILE_APPEND);
}
?>

运行结果图:

PHP大文件切割上传并带进度条功能示例

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
php 中文处理函数集合
Aug 27 PHP
php仿discuz分页效果代码
Oct 02 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
浅析php数据类型转换
Jan 09 PHP
PHP中使用Imagick实现各种图片效果实例
Jan 21 PHP
详解php中的implements 使用
Jun 13 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 PHP
PHP大文件切割上传功能实例分析
Jul 01 #PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 #PHP
PHP封装cURL工具类与应用示例
Jul 01 #PHP
PHP session垃圾回收机制实例分析
Jun 28 #PHP
PHP常用的类封装小结【4个工具类】
Jun 28 #PHP
php实现网页上一页下一页翻页过程详解
Jun 28 #PHP
php输出控制函数和输出函数生成静态页面
Jun 27 #PHP
You might like
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
python实现中文输出的两种方法
2015/05/09 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
python动态视频下载器的实现方法
2019/09/16 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
就业自荐书
2013/12/05 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
出国留学担保书
2014/05/20 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
感恩教师主题班会
2015/08/12 职场文书
导游词之张家界
2019/10/31 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
Python基础学习之奇异的GUI对话框
2021/05/27 Python
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
Java 数据结构七大排序使用分析
2022/04/02 Java/Android