纯js实现最简单的文件上传(后台使用MultipartFile)
本文转自:91博客;原文地址:http://www.9191boke.com/988405084.html
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>XMLHttpRequest上传文件</title>
- <script type="text/javascript">
- //图片上传
- var xhr;
- //上传文件方法
- function UpladFile() {
- var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
- var url = "http://localhost:8080" + "/api/attachment/upload"; // 接收上传文件的后台地址
- var form = new FormData(); // FormData 对象
- form.append("file", fileObj); // 文件对象
- xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
- xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
- xhr.onload = uploadComplete; //请求完成
- xhr.onerror = uploadFailed; //请求失败
- xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
- xhr.upload.onloadstart = function(){//上传开始执行方法
- ot = new Date().getTime(); //设置上传开始时间
- oloaded = 0;//设置上传开始时,以上传的文件大小为0
- };
- xhr.send(form); //开始上传,发送form数据
- }
- //上传成功响应
- function uploadComplete(evt) {
- //服务断接收完文件返回的结果
- var data = JSON.parse(evt.target.responseText);
- if(data.success) {
- alert("上传成功!");
- }else{
- alert("上传失败!");
- }
- }
- //上传失败
- function uploadFailed(evt) {
- alert("上传失败!");
- }
- //取消上传
- function cancleUploadFile(){
- xhr.abort();
- }
- //上传进度实现方法,上传过程中会频繁调用该方法
- function progressFunction(evt) {
- var progressBar = document.getElementById("progressBar");
- var percentageDiv = document.getElementById("percentage");
- // event.total是需要传输的总字节,event.loaded是已经传输的字节。如果event.lengthComputable不为真,则event.total等于0
- if (evt.lengthComputable) {//
- progressBar.max = evt.total;
- progressBar.value = evt.loaded;
- percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
- }
- var time = document.getElementById("time");
- var nt = new Date().getTime();//获取当前时间
- var pertime = (nt-ot)/1000; //计算出上次调用该方法时到现在的时间差,单位为s
- ot = new Date().getTime(); //重新赋值时间,用于下次计算
- var perload = evt.loaded - oloaded; //计算该分段上传的文件大小,单位b
- oloaded = evt.loaded;//重新赋值已上传文件大小,用以下次计算
- //上传速度计算
- var speed = perload/pertime;//单位b/s
- var bspeed = speed;
- var units = 'b/s';//单位名称
- if(speed/1024>1){
- speed = speed/1024;
- units = 'k/s';
- }
- if(speed/1024>1){
- speed = speed/1024;
- units = 'M/s';
- }
- speed = speed.toFixed(1);
- //剩余时间
- var resttime = ((evt.total-evt.loaded)/bspeed).toFixed(1);
- time.innerHTML = ',速度:'+speed+units+',剩余时间:'+resttime+'s';
- if(bspeed==0) time.innerHTML = '上传已取消';
- }
- </script>
- </head>
- <body>
- <progress id="progressBar" value="0" max="100" style="width: 300px;"></progress>
- <span id="percentage"></span><span id="time"></span>
- <br /><br />
- <input type="file" id="file" name="myfile" />
- <input type="button" onclick="UpladFile()" value="上传" />
- <input type="button" onclick="cancleUploadFile()" value="取消" />
- </body>
- </html>
纯js实现最简单的文件上传(后台使用MultipartFile)的更多相关文章
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- node.js使用express框架进行文件上传
关于node.js使用express框架进行文件上传,主要来自于最近对Settings-Sync插件做的研究.目前的研究算是取得的比较好的进展.Settings-Sync中通过快捷键上传文件,其实主要 ...
- 使用jsp/servlet简单实现文件上传与下载
使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用 ...
- Django 实现简单的文件上传
今天分享一下Django实现的简单的文件上传的小例子. 步骤 创建Django项目,创建Django应用 设计模型 处理urls.py 以及views.py 设计模板,设计表单 运行项目,查看数据库 ...
- Bootstrap fileinput.js,最好用的文件上传组件
本篇介绍如何使用bootstrap fileinput.js(最好用的文件上传组件)来进行图片的展示,上传,包括springMVC后端文件保存. 一.demo 二.插件引入 <link ty ...
- DVWA靶机--简单的文件上传漏洞
简单的文件上传漏洞(靶机安全级别:low) 事先准备好一句话木马,密码为pass 上传一句话木马,显示上传路径(一般网站是不会显示路径的,这里靶机为了方便你测试漏洞,直接显示出了路径: ../../h ...
- Java实现一个简单的文件上传案例
Java实现一个简单的文件上传案例 实现流程: 1.客户端从硬盘读取文件数据到程序中 2.客户端输出流,写出文件到服务端 3.服务端输出流,读取文件数据到服务端中 4.输出流,写出文件数据到服务器硬盘 ...
- node.js系列(实例):原生node.js+formidable模块实现简单的文件上传
/** * 原生node.js结合formidable模块实现图片上传改名 * @Author:Ghost * @Date:2016/07/15 * @description: * 1.引入模块htt ...
- js实现简单的文件上传
文件下载:https://www.cnblogs.com/xiaomili/p/10521160.html html: <form name="form1" id=&quo ...
随机推荐
- win8共享文件设置 详细教程
1.开放防火墙445端口 2.进入组策略,依次进入 从网络访问计算机 属性里--添加-Guest 3.进入 然后把里面的用户清空 4.打开网络和共享中心,关闭密码保护共享
- JS实现文本框和文本域获取焦点focus()时,光标在本文的末尾
<!-- <input type="text" id="test1" name="test1" value="test ...
- C盘空间不够,清除VS下的 Font Cache
C盘空间老是不够用.清除Font Cache 1.在 C:\Users\Jimmy\AppData\Local\Microsoft\Visual Studio 下的 Font Cache 目录可以干 ...
- python dataframe (method,partial,dir,hasattr,setattr,getarrt)
# * _*_ coding:utf-8 _*___author__:'denny 20170730'from functools import reduceimport functoolsimpor ...
- Wince/VC高效PNG贴图,自定义Alpha算法
工作中,做一些炫点的界面都需要用到PNG图片,Wince里面微软也提供了PNG图片的支持,不过Alpha的混合速度比较慢,所以自己实现了一个Alpha的混合运算接口,经过测试,要比微软AlphaBle ...
- spark 数据倾斜的一些表现
spark 数据倾斜的一些表现 https://yq.aliyun.com/articles/62541
- InstallShield脚本事件
脚本事件主要有三大类:Before Move Data(安装数据前).Move Data(安装数据过程中).After Move Data(安装数据后). OnBegin:在初始化后,被调用 OnFi ...
- Feign从配置文件中读取url
Feign的url和name都是可配置的,就是从配置文件中读取的属性值,然后用占位符引用就可以了: ${rpc.url} @FeignClient(name = "me", url ...
- Java 9中的 9个 新特性
Java 9 中的 9个 新特性 java 7 2011发布,Java 8 2014发布,java9发布于2017年9月21日. 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它 ...
- SQL SERVER 事务和锁
内容皆整理自网络 一.事务 作者:郭无心链接:https://www.zhihu.com/question/31346392/answer/59815366来源:知乎著作权归作者所有.商业转载请联系作 ...