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
