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 高性能书写
Dec 11 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
php5.3 注意事项说明
Jul 01 PHP
php数组合并的二种方法
Mar 21 PHP
php验证session无效的解决方法
Nov 04 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
Yii2中使用join、joinwith多表关联查询
Jun 30 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
Jul 10 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
PHP中对数据库操作的封装
2006/10/09 PHP
10条php编程小技巧
2015/07/07 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
JS实现520 表白简单代码
2018/05/21 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
Python解析最简单的验证码
2016/01/07 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
Python 元组操作总结
2019/09/18 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
工程专业应届生求职信
2014/02/19 职场文书
初中军训感想300字
2014/03/05 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript