ajax 上传文件,显示进度条,进度条100%,进度条隐藏,出现卡顿就隐藏进度条,显示正在加载,再显示上传完成
<form id="uploadForm" method="post" enctype="multipart/form-data">
<input type="file" id="uploadfiles" name="file" multiple="multiple" style="display:none" accept="aplication/zip">
</form> <!-- 导入文件滚动条窗口 -->
<div class="modal fade" id="progressbar" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true" data-backdrop="false" data-keyboard="false">
<div class="modal-dialog modal-dialog-centered ">
<div class="modal-content" style="padding-top:10px;">
<div class="modal-body" style="color:black;">
上传进度:<progress style="width:30em;"></progress>
<p id="info" style="margin-top:10px"></p> </div> </div>
</div>
</div>
<div class="btn-group">
<a class="btn btn-primary dropdown-text" authorize="yes" onclick="$('#uploadfiles').click()" id="Import" title="可以选择多个文件同时上传"><i class="fa fa-plus"></i>批量上传</a>
</div>
js
var totalSize = 0;
//绑定所有type=file的元素的onchange事件的处理函数
$('#uploadfiles').change(function eventStart() {
var fileQty = this.files.length;
if (fileQty == 0) {
return;
}
else {
var unvalidFiles = [];
$(this.files).each(
function (index, file) {
var filename = file.name;
//type = file.type; ini文件获取扩展名为空
var extIndex = filename.lastIndexOf(".");
var ext = filename.substring(extIndex + 1);//扩缀名
if (ext != 'zip') {
unvalidFiles.push(filename);
}
var size = file.size;
totalSize += size;
});
if (unvalidFiles.length > 0) {
$('#uploadfiles').val("");
$.modalAlert('存在非zip文件,请重新选择', 'error');
return;
}
else {
$("#info").html("已上传/总大小: " + '0KB/' + Math.ceil(totalSize / 1000) + "KB");
$("#progressbar").modal(); doUpload("/NGS/Report/Upload");
} } }); //上传文件
function doUpload(url) {
//创建FormData对象,初始化为form表单中的数据。需要添加其他数据可使用formData.append("property", "value");
var formData = new FormData($('form')[0]);
//formData.append("DataType", DataType);
//ajax异步上传
$.ajax({
url: url,//"/NGS/Report/Upload",
type: "POST",
cache: false,
data: formData,
dataType: 'json',
contentType: false, //必须false才会自动加上正确的Content-Type
processData: false, //必须false才会避开jQuery对 formdata 的默认处理
xhr: function () { //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数
myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) { //检查upload属性是否存在
//绑定progress事件的回调函数
myXhr.upload.addEventListener('progress', progressHandlingFunction, false);
}
return myXhr; //xhr对象返回给jQuery使用
},
success: function (result, status, xhr) {
$("#progressbar").hide();
$('#uploadfiles').val("");
$("#progressbar").modal('hide');
if (result.state == "error") {
console.log(result1);
var err = '<textarea style="width:430px;height:294px;outline:none;resize:none;">有部分文件导入失败,请检查原因:\r\n';
$.each(result.data, function (index, item) { // err += index + 1 + '、文件名:' + item.file + ' 错误:' + item.error + '\r\n';
err += index + 1 + '、文件名:' + item + '\r\n'; }); content = err + '</textarea>';
top.layer.alert(content, {
icon: 'fa-times-circle',
title: "系统提示",
area: ['550px', '450px'],
btn: ['确认'],
btnclass: ['btn btn-primary']
});
}
else {
$.currentWindow().$("#gridList").trigger("reloadGrid");
$.modalMsg('上传文件成功', 'success');
$('#loadingPage', parent.document).css("display", "none");
} },
error: function (XMLHttpRequest, textStatus, error) {
$('#uploadfiles').val("");
$("#progressbar").modal('hide');
$.modalMsg(error, 'error');//报错:
},
});
} //上传进度回调函数:
function progressHandlingFunction(e) {
total = Math.ceil(e.total / 1000);
if (e.lengthComputable) {
loaded = Math.ceil(e.loaded / 1000);
$('progress').attr({ value: loaded, max: total }); //更新数据到进度条
var percent = loaded / total * 100;
$('#info').html(loaded + "/" + total + " KB " + "<span>" + percent.toFixed(2)+"</span>" + "%");
}
var infoV = $("#info span").html();
if (infoV == 100.00) {
$("#progressbar").hide();
$('#loadingPage', parent.document).css("display", "block");
$('#loadingPage .loading-content', parent.document).html("数据处理中,请稍后…"); } }
ajax 上传文件,显示进度条,进度条100%,进度条隐藏,出现卡顿就隐藏进度条,显示正在加载,再显示上传完成的更多相关文章
- js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面
js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 , 做手机端开发时,发现一个问题,有些浏览器,在网速比较慢的情况下,js文件没有加载完,后续的调用已经开始调用了, ...
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
- 如何在启用SharePoint浏览器功能的InfoPath 表单中添加托管代码以动态地加载并显示图片
InfoPath 的浏览器表单不支持加载并显示图片,当然在模板中可以插入图片,但是如果想显示数据库的一幅图片,或是动态加载一张图片就无能为力了. 基实这个问题可以通过在浏览器表单中使用: " ...
- EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载
之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...
- EF如何操作内存中的数据和加载外键数据:延迟加载、贪婪加载、显示加载
EF如何操作内存中的数据和加载外键数据:延迟加载.贪婪加载.显示加载 之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需 ...
- lufylegend:图片的加载和显示
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <script ...
- 从代码分析Android-Universal-Image-Loader的图片加载、显示流程
从UNIVERSAL IMAGE LOADER. PART 3(四个DisplayImage重载方法详解)中,我们学习了Android-Universal-Image-Loader(以下简称UIL)中 ...
- 【jquery】 在异步加载的元素上绑定事件
最近因为工作关系又重新回归到了jquery的怀抱,发现很多jquery的一些细节处理的部分都忘记了.这里记录一下最近在做项目时频繁遇到的一个问题:给异步加载的元素添加事件绑定. 问题发生的前提是项目前 ...
- Angular 使用 frame 加载网络资源显示路径不安全问题
Angular 使用 frame 加载网络资源显示路径不安全问题 做项目的时候,angular 使用 frame 加载网络pdf文件的时候出现 unsafe value 问题,路径不安全.解决办法. ...
- Android加载手机磁盘上的资源---decodeFile方法的使用
一般在写Android程序时,通常会将图片资源放在/res/drawable/文件夹下,读取时,通过R.drawable.imageId即可读取图片内容,但用户在使用时,一般会想要读取存放在存储卡上的 ...
随机推荐
- [转]JSTL 自定义方法报错Invalid syntax for function signature in TLD.
Apache Tomcat/6.0.18 ${my:splitApply(apply)} <function> <name>splitApply</name> &l ...
- ambari安装 QA
1.在安装时 出现Public key for ambari-server-2.4.2.0-136.x86_64.rpm is not installed 安装ambari报错 在安装HST服务时也报 ...
- 【Java】移动JDK路径后,修改环境变量不生效 Error: could not open `C:\Program Files\Java\jre1.8.0_131\lib\amd64\jvm.cfg'
场景: JDK原先装在C盘的,现在移动到了D盘,并在环境变量修改了%JAVA_HOME%的新路径,但是CMD中输入java后依然报错. Error: could not open `C:\Progra ...
- Android GIS +webservice
Android新手经典入门教程 Android开发教程(完全免费版) Android SDK v3.1.0 Android定位功能(一) Android定位功能(二) Android 百度地图开发(一 ...
- 服务器部署多个tomcat(Address already in use: JVM_Bind)
一.修改startup.bat **多个Tomcat同时运行时.不要设置 catalina_home catalina_base classes 环境变量, 修改setclasspath.bat (| ...
- 使用Python管理压缩包
一. 使用tarfile库读取与创建tar包 1. 创建tar包 In [1]: import tarfile In [2]: with tarfile.open('demo.tar',mode='w ...
- 【netcore入坑记】 .Net core UseRowNumberForPaging 分页报错 SQL Server 2008 R2 EntityFrameworkCore
异常环境: netcore版本:.Net Core 2.1 efcore版本:Microsoft.EntityFrameworkCore.SqlServer 2.1.1 sql sqlserver 版 ...
- Android Studio设置代理,解决检查更新gradle信息的问题
Android Studio是基于JetBrains公司的IDEA开发的,Android Studio里的项目都是由Gradle构建的,Gradle集合了Ant和Maven的优点,又解决了他们的缺点, ...
- mongodb new file allocation failure
话说那天正在向mongodb中写入数据,突然就蹦出了 new file allocation failure ,以为是数据有错误,就检查了一番,可没问题啊,看着像是mongo自己的问题,于是百度了一番 ...
- 关于思科C2950交换机清除密码,恢复初始配置的方法
上个月河南做项目,因需要大批量的对服务器进行操作系统的安装,于是想到了PXE网络批量安装, 好不容易到机房的仓库找到网线及一台思科交换机,但到安装的时候,发现思科交换机里应该有配置了 通过配置线连接交 ...