怎么在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中利用ajax对文件进行切割上传问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。