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 相关文章推荐
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
php正则校验用户名介绍
Jul 19 PHP
PHP 全角转半角实现代码
May 16 PHP
PHP $_FILES函数详解
Mar 09 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
php日志函数error_log用法实例分析
Sep 23 PHP
PHP数组对象与Json转换操作实例分析
Oct 22 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
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
jquery中实现标签切换效果的代码
2011/03/01 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
python实发邮件实例详解
2019/11/11 Python
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
买房子个人收入证明
2014/01/16 职场文书
小学语文教研活动总结
2014/07/01 职场文书
入党函调证明材料
2014/12/24 职场文书
环卫处个人工作总结
2015/03/04 职场文书
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js