PHP如何实现切割文件上传,方法是什么?
导读:这篇文章给大家分享的是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