php+ajax实现文件切割上传功能示例


Posted in PHP onMarch 03, 2020

本文实例讲述了php+ajax实现文件切割上传功能。分享给大家供大家参考,具体如下:

html5中的File对象继承Blob二进制对象,Blob提供了一个slice函数,可以用来切割文件数据。

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <form method="post" id="myForm">
    <input type="file" name="file" id="upfile" />
    <input type="submit" name="submit" value="提交" />
  </form>
  <div id="upStatus"></div>
</body>
<script type="text/javascript">
  var myForm = document.getElementById("myForm");
  var upfile = document.getElementById("upfile");

  myForm.onsubmit = function() {
    //获取文件对象
    var file = upfile.files[0];
    //获取文件大小
    var fileSize = file.size;
    //一次截取的大小(字节)
    var CutSize = 1024 * 1024 * 10;
    //开始截取位置
    var CutStart = 0;
    //结束截取位置
    var CutEnd = CutStart + CutSize;
    //截取的临时文件
    var tmpfile = new Blob();

    while(CutStart < fileSize) {
      tmpfile = file.slice(CutStart, CutEnd);

      //我们创建一个FormData对象
      var fd = new FormData();
      //把文件添加到FormData对象中
      fd.append("file", tmpfile);

      var xhr = new XMLHttpRequest();
      //这里使用同步
      xhr.open("post", "upfile.php", false);

      //上传进度
      console.log(Math.round( (CutStart + tmpfile.size) / fileSize * 100) + "%");

      //发送FormData对象
      xhr.send(fd);
      //重新设置截取文件位置
      CutStart = CutEnd;
      CutEnd = CutStart + CutSize;
    }
    return false;
  };
</script>
</html>

upfile.php代码如下:

<?php
$uploadDir = './upload/';
if(!file_exists($uploadDir)) {
  @mkdir($uploadDir, 0777, true);
}
$uploadFile = $uploadDir . basename($_FILES['file']['name']);

if(!file_exists($uploadFile)) {
  //如果文件不存在
  move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile);
} else {
  //如果文件已存在,追加数据
  file_put_contents($uploadFile, file_get_contents($_FILES['file']['tmp_name']), FILE_APPEND);
}

更多关于PHP相关内容可查看本站专题:《PHP+ajax技巧与应用小结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

PHP 相关文章推荐
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
PHP版自动生成文章摘要
Jul 23 PHP
php array_search() 函数使用
Apr 13 PHP
让你成为更出色的PHP开发者的10个技巧
Feb 25 PHP
php入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
php include和require的区别深入解析
Jun 17 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
Jul 28 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 #PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 #PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 #PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 #PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 #PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 #PHP
PHP中关于php.ini参数优化详解
Feb 28 #PHP
You might like
15种PHP Encoder的比较
2007/04/17 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
smarty表格换行实例
2014/12/15 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
python字符串排序方法
2014/08/29 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
django 简单实现登录验证给你
2019/11/06 Python
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
新浪网技术部笔试题
2016/08/26 面试题
医院护理人员的自我评价分享
2013/10/04 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
高中生的自我评价
2014/03/04 职场文书
我爱我校演讲稿
2014/05/21 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
建国大业观后感
2015/06/01 职场文书
孔子观后感
2015/06/08 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python