欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

js教程

slice大文件切割上传带进度条思路代码

js教程 我的站长站 2022-12-25 共79人阅读

前端HTML代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>大文件切割上传带进度条</title>
    <link rel="stylesheet" href="">
<script>
var xhr = new XMLHttpRequest();//xhr对象
var clock = null;
function selfile(){
    clock = window.setInterval(sendfile,1000);
}
var sendfile = (function (){
    const LENGTH = 1024 * 1024 * 10;//每次上传的大小
    var start = 0;//每次上传的开始字节
    var end = start + LENGTH;//每次上传的结尾字节
    var sending = false;//表示是否正在上传
    var fd = null;//创建表单数据对象
    var blob = null;//二进制对象
    var percent = 0;
    return (function (){
        //如果有块正在上传,则不进行上传
        if(sending == true){
            return;
        }
        var file = document.getElementsByName('video')[0].files[0];//文件对象
        //如果sta>file.size,就结束了
        if(start > file.size){
            clearInterval(clock);
            return;
        }
        blob = file.slice(start,end);//根据长度截取每次需要上传的数据
        fd = new FormData();//每一次需要重新创建
        fd.append('video',blob);//添加数据到fd对象中
        up(fd);
        //重新设置开始和结尾
        start = end;
        end = start + LENGTH;
        sending = false;//上传完了
        //显示进度条
        percent = 100 * start/file.size;
        if(percent>100){
            percent = 100;
        }
        document.getElementById('bar').style.width = percent + '%';
        document.getElementById('bar').innerHTML = parseInt(percent)+'%';
    });
})();
function up(fd){
    xhr.open('POST','13-slice-upload.php',false);
    xhr.send(fd);
}
</script>
<style>
    #progress{
        width:500px;
        height:30px;
        border:1px solid green;
    }
    #bar{
        width:0%;
        height:100%;
        background-color: green;
    }
</style>
</head>
<body>
    <h1>大文件切割上传带进度条</h1>
    <div id="progress">
        <div id="bar"></div>
    </div>
    <input type="file" name="video" onchange="selfile();" />
</body>
</html>

后端upload.php文件:

<?php
/**
 * 大文件切割上传,把每次上传的数据合并成一个文件
 * @author webbc
 */
$filename = './upload/upload.wmv';//确定上传的文件名
//第一次上传时没有文件,就创建文件,此后上传只需要把数据追加到此文件中
if(!file_exists($filename)){
    move_uploaded_file($_FILES['video']['tmp_name'],$filename);
}else{
    file_put_contents($filename,file_get_contents($_FILES['video']['tmp_name']),FILE_APPEND);
}
?>


相关推荐
  • js代码
  • 大文件上传
  • 进度条
  • js指定时间定时自动执行代码分享

    示例代码用的`setTimeout()`函数,在指定的时间后执行。代码非常的简单,获取当前时间和设定一个指定时间,指定时间减去当前时间就是定时的时间,如果定时器到期时等于0,就代表时间到了,就运行executeAtTime函数的方法。function executeAtTime() { console....

    js教程 96 1年前
  • JS代码解除网页右键限制

    JS解除右键限制方法一javascript:(function () {function R(a) {ona = "on" + a;if (window.addEventListener){window.addEventListener(a, function (e) {for (var n = e.originalTarget; n; n = n.parentNode){n[ona] = null;}}, true);}window[o...

    js教程 202 4年前
  • 淘宝买家秀API+ajax代码

    淘宝买家秀API+ajax代码,用的是这个API,https://api.66mz8.com/api/rand.tbimg.php?format=jsonJSON返回格式,测试依旧可用。$(function(){ $.get('https://api.66mz8.com/api/rand.tbimg.php?format=json',function(data){ document.getElementB...

    js教程 748 4年前
  • JS判断电脑端手机端自动跳转代码

    JS判断电脑端手机端自动跳转代码,这段代码已经封装好了,不需要任何处理,复制引用就可以使用了。相比网上的JS判断终端代码,这点代码是直接判断终端然后判断域名是否带www.wdzzz.com,带就跳转到m.wdzzz.com//是否是移动端function is_mobile() {var regex_...

    js教程 120 4年前
  • JS年月日星期早中午时间代码

    JS年月日星期早中午时间代码,我的站长站自用时间代码,完美简单。var day=""; var month=""; var ampm=""; var ampmhour=""; var myweekday=""; var year=""; var hh;var wh;mydate=new Date(); myweekday=mydate.getDay(); mymonth=mydate.g...

    js教程 92 4年前
  • php+ajax大文件分片上传示例代码

    代码思路PHP在上传超大的文件时,不能只让后端PHP上传,会容易上传到一半内测益处失效。需要前端要和后端相互配合一起来处理,文件上传要使用ajax的方法,而不是form的submit的方式。前端把file文件对象按一定的大小分割成一定大小的文件(如按2M或5M来分割),对...

    php教程 69 1年前
  • 宝塔面板环境上传大文件失败配置方法

    宝塔面板环境上传100M大小的文件,在上总是报错,但是在本地可以正常上传。上传小一点的文件,就不报错。代码和nginx和php的配置文件都设置了150M,超时时间也设置了,应该没啥问题。但就是报错。百度好久,网上说的答案都试了,没效果。解决方法1、fread()的方法...

    宝塔面板 270 1年前
  • php上传大文件必备配置方法

    项目要求如果你的项目需要用到大文件上传或下载功能,就必须首先修改PHP的配置才行,否则上传或下载操作就会超时,操作失败。操作步骤打开php配置文件php.ini,首先找到; file uploads ;区域,有影响文件上传的以下几个参数:file_uploads = on ;//是否允许...

    php教程 81 1年前
  • Nginx上传大文件超时设置方法

    在使用Nginx上传大文件时,需要先设置下Nginx的配置,否则就会超时。推荐修改参数client_header_timeout:读取请求头的超时时间,若超过所设定的大小,返回408错误。client_body_timeout:读取请求实体的超时时间,若超过所设定的大小,返回413错误。proxy_connect_...

    服务器配置 189 1年前
  • file.slice大文件上传新方法

    上传大文件还在苦心整合第三方插件吗,现在HTML5出了一个新方法。我们一起来看看利用file.slice上传大文件是多么简单吧。示例代码let file = $(":file")[0].files[0]; let fileSize = file.size; let blockSize = 20*1024; let num = Math.ceil(fi...

    js教程 39 1年前
  • PHP大文件分片上传并带进度条功能示例

    html文件:<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>大文件切割上传带进度条</title> <link rel="stylesheet" href...

    php教程 55 1年前
  • Ajax实现文件上传进度条功能示例代码

    1. HTML代码<div class="form-group required"> <label class="col-sm-3 control-label">文件名:</label> <div class="col-sm-6"> <input id="fileName" name="fileName" class=&quot...

    js教程 68 1年前
  • 利用flush开发文件下载进度条功能示例

    原理就是分次读写,每次读多少字节,用socket保持与客户端通讯,利用flush()持续更新浏览器UI,返回已下载的数据大小,显示下载速度,以及进度条之类;<html><body><table border="1" width="300"><tr><td width="100">文件大小</td><td width="200"><div...

    php教程 47 1年前
  • ajax上传文件进度条功能示例代码

    ajax上传文件时,有时比较耗时,需要在界面上显示下进度信息,获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数前端代码<!DOCTYPE html><html><head><meta charset="utf8"><title>test upload</title><!--jquery--><script src="h...

    js教程 65 1年前
  • slice大文件切割上传带进度条思路代码

    前端HTML代码:<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>大文件切割上传带进度条</title> <link rel="stylesheet&...

    js教程 79 1年前