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 04 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
php生成扇形比例图实例
Nov 06 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
排序算法之PHP版快速排序、冒泡排序
Apr 09 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
Angular的$http与$location
2016/12/26 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Python3基础之list列表实例解析
2014/08/13 Python
在Python中使用dict和set方法的教程
2015/04/27 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python之指数与E记法的区别详解
2019/11/21 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
Python xlwt模块使用代码实例
2020/06/10 Python
五种Python转义表示法
2020/11/27 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
幼儿园教师的考核评语
2014/04/18 职场文书
促销活动总结
2014/04/28 职场文书
纪律教育月活动总结
2014/08/26 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
导游词之杭州西湖
2019/09/19 职场文书
python某漫画app逆向
2021/03/31 Python
Java实现房屋出租系统详解
2021/10/05 Java/Android