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如何得到当前页和上一页的地址?
Nov 27 PHP
使用apache模块rewrite_module (转)
Feb 14 PHP
PHP学习资料汇总与网址
Mar 16 PHP
PHP简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 PHP
php中取得URL的根域名的代码
Mar 23 PHP
php 对输入信息的进行安全过滤的函数代码
Jun 29 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
PHP+Ajax实时自动检测是否联网的方法
Jul 01 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
如何判断微信付款码和支付宝付款码
Apr 01 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 引用是个坏习惯
2010/03/12 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
three.js快速入门【推荐】
2017/01/21 Javascript
Move.js入门
2017/02/08 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
python读取文件名并改名字的实例
2019/01/07 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python logging设置和logger解析
2019/08/28 Python
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
高中历史教学反思
2016/02/19 职场文书