js做文件分片上传

2023-05-16

js做文件分片上传

分片上传视频,图片,音频,转base64
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>testFile</title>
    <script src="~/Content/lib/jquery/jquery-2.0.3.min.js"></script>
</head>
<body>
    <div>
        <input type="file" id="file" accpet="image/gif,image/png,image/jpeg,image/jpg,ipa" />
        <button id="btn" οnclick="clicka()"> 上传</button>
    </div>
    <script>
        function readBlob(opt_startByte, opt_stopByte, index) {

            var files = document.getElementById('file').files;
            if (!files.length) {
                alert('Please select a file!');
                return;
            }

            var file = files[0];
            var start = parseInt(opt_startByte) || 0;
            var stop = parseInt(opt_stopByte) || file.size - 1;
            var reader = new FileReader();//读取文件对象
  


            reader.onloadend = function (evt) {//文件读取完成

                if (evt.target.readyState == FileReader.DONE) { // DONE == 2
                    //document.getElementById('byte_range').textContent =
                    //    ['send bytes: ', start, ' - ', stop,
                    //        ' of ', file.size, ' byte file'].join('');
                    ----------json data
                    var block_size = opt_stopByte - opt_startByte;
                    var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(reader.result)));
                    //base64 with no gzip if you want to improve you can use gzip compress base64
                    var send_data = { 'fileName': file.name, 'index': index, 'file': base64String, 'isFinished': opt_stopByte >= file.size ? 1 : 0 };
                    //-------------ajax start

                    console.log(send_data);

                  
                    $.ajax({
                        url: '/file/UploadFile',
                        type: 'post',
                        data: send_data,
                        tradition: true,
                        success: function (data) {
                            console.log(data);
                            if (opt_stopByte < file.size) {
                                readBlob(opt_startByte + block_size, opt_stopByte + block_size, index + 1)
                            }
                            

                        },
                        beforeSend: function (xhr, settings) {//set csrf cookie

                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            alert(textStatus + " : " + errorThrown);
                        }
                    });
                    //---------ajax end
                    //}
                    //async_send('/upload/', send_data);
                }
            };
            if (window.File && window.FileList && window.FileReader && window.Blob) {

            } else {
                alert('您的浏览器不支持File Api');
            }
            if (stop > file.size) {
                stop = file.size;
            }
            var blob = file.slice(start, stop);

            reader.readAsArrayBuffer(blob);

        }
    
        document.getElementById('btn').addEventListener('click', function (evt) {
            var o_files = (document.getElementById('file').files);
            var o_file = o_files[0];
            var block = 1024 * 100;
            console.log(o_file.size);
            readBlob(0, 0 + block, 0);

        }, false);


    </script>
</body>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js做文件分片上传 的相关文章

  • Windows10系统下的WSL+Ubuntu图形桌面配置

    Windows10系统下的WSL 43 Ubuntu图形桌面配置 参考 xff1a windows10下安装Ubuntu子系统 Windows下安装VcXsrv WSL Ubuntu下安装xfce desktop span class to
  • C++:什么是STL?

    什么是STL xff1f 1 STL概论1 1 STL基本概念1 2 STL六大组件简介1 3 STL优点 2 STL三大组件2 1 容器2 2 算法2 3 迭代器2 3 案例 1 STL概论 长久以来 xff0c 软件界一直希望建立一种可
  • makefile中.PHONY的作用是什么?

    makefile中 PHONY的作用是什么 xff1f 初学makefile的时候 xff0c 有一个关键字 PHONY 搞不懂 xff0c 在请教过同学之后豁然开朗 xff0c 遂写下经验望帮助更多的同学能够理解 在某度可以搜到phony
  • TCP和UDP的区别

    TCP和UDP的区别 1 TCP 是什么2 UDP 是什么3 TCP 和 UDP 的不同 1 TCP 是什么 TCP 的全称是Transmission Control Protocol xff0c 传输控制协议 它能够帮助你确定计算机连接到
  • 操作系统死锁 四个必要条件

    操作系统死锁 四个必要条件 1 死锁 xff1a 如果一组进程中的每一个进程都在等待仅由该组进程中的其它进程才能引发的事件 xff0c 那么该组进程是死锁的 2 产生死锁的原因 xff1a xff08 1 xff09 竞争不可抢占性资源 x
  • C++智能指针总结(面试常问)

    C 43 43 智能指针总结 xff08 面试常问 xff09 1 智能指针的实现原理2 C 43 43 11四种智能指针总结2 1 auto ptr xff1a 2 2 unique ptr 2 3 share ptr 2 4 weak
  • C++可重入函数和不可重入函数

    C 43 43 可重入函数和不可重入函数 可重入函数是指能够被多个线程 同时 调用的函数 xff0c 并且能保证函数结果正确不必担心数据错误的函数 不可重入函数是指不能运行在多任务环境下 xff0c 除非能保证互斥的函数 由于使用了未受保护
  • STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)

    STM32单片机中WIFI模块数据传输问题 xff08 float gt u32 gt u8 u8 gt u32 gt float xff09 最近在做毕业设计 xff0c 在做wifi数据传输与接收时 xff0c 涉及到了STM32单片机
  • Windows10忘记用户密码?怎么打开电脑?

    Windows10忘记用户密码 xff1f 怎么打开电脑 xff1f 首先在输入密码的登录界面连续敲5次shift按键进入cmd命令行 输入net user查看用户 现在是自己创建的用户忘记密码 xff08 我的是Sunrise用户 xff
  • java --向上转型和向下转型

    一 简述 Java 转型主要是用在继承和接口实现的场景 xff0c Java 转型可分为向上转型和向下转型 xff0c 区别如下 xff1a 向上转型 xff1a 通过子类对象实例化父类对象 xff0c 这属于自动转换 向下转型 xff1a
  • docker

    docker 背景 环境配置的难题 软件开发最大的麻烦事之一 就是环境配置 用户计算机的环境都不相同如果某些老旧的模块与当前环境不兼容 那就麻烦了环境配置如此麻烦 换一台机器 就要重来一次 旷日费时能不能从根本上解决问题 软件可以带环境安装
  • 6.2 能控性

    能控性和能观性是线性系统学习中非常重要的部分 xff0c 它们是研究控制问题和滤波问题所必需的 今儿先来说能控性 一 能控性是啥 xff1f 定义6 1 若对任意初始状态 x 0 61
  • 计算机网络精选20道题

    1 现有一个公司需要创建内部的网络 xff0c 该公司包括工程技术部 市场部 财务部和办公室4个部门 xff0c 每个部门约有20 xff5e 30台计算机 试问 xff1a xff08 1 xff09 若要将几个部门从网络上进行分开 如果
  • “四旋翼”无人机“X模式”飞行原理

    文章目录 摘要飞行器分类四旋翼 X模式 飞行原理四旋翼 十模式 飞行原理参考资料 摘要 简单的介绍了四旋翼无人机的两种模式的飞行原理 飞行器分类
  • PID控制器原理及模块化的源码

    文章目录 摘要PID原理概述比例环节积分环节微分环节 串级双闭环PID控制外环内环 模块化的源码主函数硬件初始化PID复位定义私有变量计算串级PIDPID计算公式源码LIMIT范围控制宏定义思维导图 摘要 小飞机由于飞手的技术和外部环境因素
  • 用驱动精灵和手动更新方式安装 Arduino mega 2560 驱动失败的解决方案

    文章目录 摘要安装步骤 下载安装包 安装地面站 安装驱动 驱动安装失败 补充知识 注意事项总结思考 摘要 硬件环境 xff1a AMP飞控 固件采用的3 2 1软件环境 xff1a Win7 xff0c 地面站采用MissionPlanne
  • 使用条件类型实现TypeScript中的函数重载

    假设有这样的一个函数 xff0c 你会怎么来声明他的类型呢 xff1f function add a b return a 43 b add函数可能有两种情况 参数a b为number类型 xff0c 返回值为number类型参数a b为s
  • 【星海出品】openstack LVM后端

    LVM后端创建 LVM的Red Hat 管理介绍 xff1a https access redhat com documentation zh cn red hat enterprise linux 7 html logical volum
  • xshell连接ubuntu虚拟机失败的2个问题

    问题1 xff1a 虚拟机查看ip失败 xff0c 只显示lo xff0c 不显示ens33 解决方法 xff1a 一句代码 sudo dhclient ens33 成功 xff01 问题2 xff1a xshell连接虚拟机ip地址失败
  • Ubuntu20.10 成功安装搜狗输入法的教程(图文详解)

    1 首先安装fcitx 在终端 xff08 Ctrl 43 Alt 43 T打开 xff09 输入 sudo apt get install fcitx 2 在搜狗输入法网页选择linux版本 https pinyin sogou com

随机推荐

  • (七)springcloud Oauth2授权-Spring Cloud Oauth2

    spring security oauth2 客户端四种授权模式 xff1a 授权码模式 xff08 authorization code xff09 xff1a 第三方应用先申请一个授权码 xff0c 然后再用该码获取令牌 简化模式 xf
  • ROS_Dynamic Reconfig 动态参数调节

    创建功能包 package cd catkin ws src catkin create pkg dynamic refg roscpp dynamic reconfigure cd catkin make 向功能包添加动态重配置文件 cf
  • BGA“焊点”虚焊原因分析及控制方法

    电路板调试过程中 xff0c 会出现 BGA器件外力按压有信号 xff0c 否则没有信号 的现象 xff0c 我们称之为 虚焊 本文通过对这种典型缺陷进行原因分析认为 xff1a 焊接温度曲线 焊膏量 器件及PCB板焊盘表面情况以及印制板设
  • Python中的列表(清晰易懂)

    列表是用来存放数据的 Python中的列表关键字是list 我们来定义一个列表 lista 61 34 a 34 34 b 34 34 c 34 666 34 a 34 可以看到列表lista中 有字符型数据 34 a 34 34 b 34
  • VR技术类毕业论文文献有哪些?

    本文是为大家整理的VR技术主题相关的10篇毕业论文文献 xff0c 包括5篇期刊论文和5篇学位论文 xff0c 为VR技术选题相关人员撰写毕业论文提供参考 1 期刊论文 运动炫科技 智慧赢未来 VR技术在体育领域内的应用与展望 期刊 xff
  • Haar特征类有哪些最新发表的毕业论文呢?

    一 总体简介 Haar特征的相关文献在2006年到2020年内共计132篇 xff0c 主要集中在自动化技术 计算机技术 无线电电子学 电信技术 公路运输 等领域 xff0c 其中期刊论文100篇 会议论文4篇 专利文献28篇 xff1b
  • 查阅国外文献的网站有哪些?

    毕业季不知道小伙伴们有没有为了论文感到头秃 xff0c 参考文献在我们的论文中有着举足轻重的作用 xff0c 每年这个时候都有大批小伙伴为这个寻找参考文献发愁 有些专业的小伙伴由于专业的特殊性很多需要的文献还是外文文献 xff0c 对他们来
  • 使用Python和C++的写数据结构和算法

    使用Python和C 43 43 的写数据结构和算法 1 数据结构和算法简介2 数据结构2 1 堆栈2 2 队列2 3 散列表2 4 二叉树2 5 线性搜索2 6 二进制搜索2 7 递归2 8 递归二进制搜索2 9 QuickSort2 1
  • Hive与Hbase的区别与联系

    一 概念 1 xff0c Hive hive是基于Hadoop的一个数据仓库工具 xff0c 用来进行数据提取 转化 加载 xff0c 这是一种可以存储 查询和分析存储在Hadoop中的大规模数据的机制 hive数据仓库工具能将结构化的数据
  • ros 命名空间

    文章目录 全局命名空间相对名称私有名称节点命名空间 全局命名空间 rosout前面的反斜杠 表明该节点名称属于全局命名空间 之所以叫做全局名称因为它们在任何地方 xff08 包括代码 命令行工具 图形界面工具等的任何地方 xff09 都可以
  • DenseNet及torchvision中的实现

    ResNets Highway Networks Stochastic depth DenseNet他们的共同的特点是 They create short paths from early layers to later layers 他们
  • Xmanager5用Xstart连接CentOS7

    今天安装了Xmanager5 xff0c 原本已经有了Xshell5 xff0c 没有冲突 xff0c 测试Xftp Xshell使用上均无问题 到了Xstart却出错了 xff0c 客户端设置完后点击运行 xff0c 出现报错 查找了许多
  • CAN总线入门学习(一)

    今天带着大家学习 xff0c CAN总线 1 概要 本资料是面向 CAN 总线初学者的 CAN 入门 对 CAN 是什么 CAN 的特征 标准规格下的位置分布等 CAN 的概要及 CAN 的协议进行了说明 2 使用注意事项 本资料对博世 B
  • java调用接口

    long dateStr 61 System currentTimeMillis 1000 String url 61 34 34 创建参数 JSONObject jsonObject 61 new JSONObject jsonObjec
  • 英特尔NUC 11板载USB3.0座子接口定义

    规格书没有座子PIN定义 xff0c 于是我找技术支持提供了定义
  • 宝塔配置Workerman

    map span class token variable http upgrade span span class token variable connection upgrade span span class token punct
  • px4飞控和机载电脑通信:机载电脑接收飞控的自定义px4消息

    机载电脑接收飞控的自定义px4消息 mavros功能包能够实现px4飞控和机载电脑之间的实时通信 而对于大部分的消息通信mavros都已经有相应接口可以调用 xff0c 例如 xff1a 位置 期望位置 速度 四元素等消息都可以通过C 43
  • px4飞控和机载电脑通信:飞控接收机载电脑的自定义mavlink消息

    前面一篇讲了机载电脑怎么接受飞控的px4消息 这一篇讲解如何飞控怎么接收从机载电脑传过来的消息 分成两部分 机载电脑发送消息 飞控接收消息 pixhawk版本 pixhawk4 px4版本 1 11 2 ros版本 1 14 10 机载电脑
  • 多无人机通信-路由器实现

    多无人机通信 多无人机之间相互通信是实现编队飞行的基础 而想要实现通信就需要组建网络 在网络之间实现数据信息的互相传输 按结构分成两大类 中心节点网络和无中心节点网络 我们这里所用的路由器就是中心节点网络 所有的数据的传输都要经过中心节点
  • js做文件分片上传

    js做文件分片上传 分片上传视频 xff0c 图片 xff0c 音频 xff0c 转base64 64 Layout 61 null lt DOCTYPE html gt lt html gt lt head gt lt meta name