前端之HTML利用XMLHttpRequest()和FormData()进行大文件分段上传

用于网页向后端上传大文件

### 前端代码<body>
<input type="file" name="video" id="file"  />
<input type="button" class="btn btn-info" id="sub" value="提交">

  <script>
    $("#sub").on("click",selfile())    #当提交按钮被点击时触发上传

    function selfile(){
      const LENGTH = 1024 * 1024 * 10;//每次上传的大小
      var file = document.getElementsByName(‘video‘)[0].files[0];//文件对象
      var filename=document.getElementsByName(‘video‘)[0].files[0].name;
      var totalSize = file.size;//文件总大小
      var start = 0;//每次上传的开始字节
      var end = start + LENGTH;//每次上传的结尾字节
      var fd = null;//创建表单数据对象
      var blob = null;//二进制对象
      var xhr = null;//xhr对象
      while(start < totalSize){
        fd = new FormData();//每一次需要重新创建
        xhr = new XMLHttpRequest();//需要每次创建并设置参数
        xhr.open(‘POST‘,‘/qqq/‘,false);
        blob = file.slice(start,end);//根据长度截取每次需要上传的数据
        fd.append(‘file_data‘,blob);//添加数据到fd对象中
        fd.append(‘filename‘,filename); //获取文件的名称
          fd.append("file_size",totalSize);
        xhr.send(fd);//将fd数据上传

        //重新设置开始和结尾
        start = end;
        end = start + LENGTH;

      }

     }

  </script>

</body>
##python后端路由视图函数代码:

def qqq(request):
        file_path = "c:aa.txt"
        with open(file_path,"ab") as f:
            for line in request.FILES.get("file_data"):
                f.write(line)

欢迎来搂~~~

原文地址:https://www.cnblogs.com/dongxixi/p/11007346.html

时间: 2024-10-09 19:32:08

前端之HTML利用XMLHttpRequest()和FormData()进行大文件分段上传的相关文章

利用JavaScript 的formdata 进行无刷新上传文件

<html> <head> <title></title> <script type="text/javascript" src="jquery-1.9.1.min.js"></script> </head> <body> <form id= "uploadForm"> <p >名字: <input type="

前端大文件上传解决方案支持分片断点上传

最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据.上传影音文件等.如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成. 下面从文件上传方式入手,整理大文件上传的思路,并给出了相关实例代码,由于PHP内置了比较方便的文件拆分和拼接方法,因此服务端代码使用

WebUploader 前端大文件上传

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下

WebApi实现Ajax模拟Multipart/form-data方式多文件上传

前端页面代码: <input type="file" class="file_control" /><br /> <input type="file" class="file_control" /><br /> <input type="file" class="file_control" /> <button id=&q

使用FormData进行Ajax请求上传文件到controller层的实现

需求背景: 页面上传一个文件到controller层,然后后台对文件进行处理.文件类型不限. 第一种:单纯的上传文件 页面功能展现: 第一步:首先需要两个jar commons-fileupload-1.3.2.jarcommons-io-2.4.jar 版本不限: pom文件中相应两个jar: [html] view plain copy print? <dependency> <groupId>commons-io</groupId> <artifactId&

multipart/form-data请求与文件上传

要上传文件,需要用post方法,并且设置enctype为multipart/form-data. <form action="/upload" method="post" enctype="multipart/form-data"> <input type="text" name="param1"> <input type="text" name="

如何利用git由本机向github上传文件

首先,下载一个git,安装. 安装成功之后,输入以下命令,引号内的为你自己的名字和邮箱git config --global user.name "Your Name"git config --global user.email "[email protected]" 创建一个版本库,就是存放工程的地方mkdir 文件名 初始化,初始化之后,通过ls -ah 可以看到目录下多了一个.git文件 git init(初始化仓库) 把文件添加到版本库首先新建一个文件(te

H5的FormData对象完成ajax上传文件multiFile

最近工作中需要完成,ajax上传图片,可是input file +ajax是无法完成的: 于是寻找了许久,发现了H5 的一个对象FormData 使用方法如下: HTML: 1 <form id="myForm" enctype="multipart/form-data"> 2 <input type="hidden" name="name" value="马三" /> 3 <

FormData-实现文件上传

1. new DataForm对象,向对象append文件进行上传: 例子: let formData = new DataForm() formData.append('file', oInp)