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 相关文章推荐
PHP编程中字符串处理的5个技巧小结
Nov 13 PHP
用PHP与XML联手进行网站编程代码实例
Jul 10 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
php jsonp单引号转义
Nov 23 PHP
CodeIgniter常用知识点小结
May 26 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 PHP
PHP简单实现解析xml为数组的方法
May 02 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
php实现求相对时间函数
2015/06/15 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
js实现图片轮播效果
2015/12/19 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
javaScript之split与join的区别(详解)
2017/11/08 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
基于python的汉字转GBK码实现代码
2012/02/19 Python
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
Python的标准模块包json详解
2017/03/13 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
基于Python中的yield表达式介绍
2019/11/19 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
python求解汉诺塔游戏
2020/07/09 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
党员公开承诺书内容
2014/05/20 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
民政工作个人总结
2015/02/28 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书