首页后端开发PHPPHP如何实现切割文件上传,方法是什么?

PHP如何实现切割文件上传,方法是什么?

时间2024-03-25 20:24:03发布访客分类PHP浏览697
导读:这篇文章给大家分享的是PHP如何实现切割文件上传的内容,小编觉得挺实用的,在很多场景都能使用到,因此分享给大家做个参考,这里是使用PHP+ajax实现的,文中示例代码介绍的很详细,感兴趣的朋友接下来一起跟随小编看看吧。 html5中的Fil...

这篇文章给大家分享的是PHP如何实现切割文件上传的内容,小编觉得挺实用的,在很多场景都能使用到,因此分享给大家做个参考,这里是使用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有帮助,想要了解更多可以继续浏览网络其他相关的文章。

文本转载自脚本之家

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP如何实现切割文件上传,方法是什么?
本文地址: https://pptw.com/jishu/653017.html
JS中对象字面量创建对象的方法及实现是怎样 Java接口的实现应用场景是什么,如何使用呢

游客 回复需填写必要信息