Spring Boot+AngularJS+BootStrap实现进度条示例代码
发布时间 - 2026-01-10 23:23:33 点击率:次Spring Boot+AngularJS+BootStrap实现进度条

原理
进度条的原理是在上传文件的时候,当程序运行到某一个部分,往Session中设置一个1到100的值。然后前台再每隔很小的一段时间去请求这个值。
在AngularJS中,$http对象有3种状态,分别是success,progress,error,其中progress方法就会在success方法调用之前(也就是上传完成之前),不断地调用。而我们要做的就是在progress中在添加一个请求,去后台拿我们设置在session中的值。
代码,这里我用了一个插件用来上传文件,叫ng-file-upload
html
<input type="file" data-ng-model="file">
<uib-progress data-ng-show="progress">
<uib-bar value="progress" type="{{type}}" data-ng-bind="progress + '%'"/>
</uib-progress>
<span class="err" data-ng-show="isShowMsg" data-ng-bind="Msg"></span>
<button class="btn btn-primary" type="button" data-ng-click="upload()">确认</button>
js
Upload.upload(
{
url: "",
data: {
file: file
},
method: 'post'
}).then(function (res) {
//这里是success方法
$scope.isShowMsg = true;
$scope.Msg = res.data.msg;
if($scope.Msg == "导入数据不符合格式要求!")
$scope.type = "progress-bar progress-bar-danger progress-bar-striped";//设置进度条样式
else {
$scope.type = "progress-bar progress-bar-success progress-bar-striped";
$scope.progress = 100;//上传成功之后,将进度条设置为100
}
}, function (){
//这里是error方法
}, function (){
//这里是progress方法
$scope.type = "progress-bar progress-bar-info progress-bar-striped";
$http({
url:"",
method: "get"
}).success(function (res) {
$scope.progress = res;//绑定进度条的值
})
});
上传部分代码(只需要关注设置session的地方
public Map<String, Object> batchModify(InputStream inputStream,HttpSession session) {
Map<String, Object> res = new HashMap<>();
Workbook workbook = null;
try {
workbook = Util.createWorkbook(inputStream);
} catch (InvalidFormatException | IOException e) {
e.printStackTrace();
}
session.setAttribute("progress", 5);//解析成功后我将进度设置为5
Sheet sheet = workbook.getSheetAt(0);
Map<String, Object> roleWithPages = new HashMap<>();
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
Row r = sheet.getRow(i);
if (r == null || r.getCell(0) == null || r.getCell(1) == null)
continue;
Set<Page> pages = null;
if (roleWithPages.get(r.getCell(0).toString()) == null) {
pages = new HashSet<>();
} else {
pages = (Set<Page>) roleWithPages.get(r.getCell(0).toString());
}
Page p = new Page();
p.setId(Math.round(r.getCell(1).getNumericCellValue()));
pages.add(p);
roleWithPages.put(r.getCell(0).toString(), pages);
session.setAttribute("progress", 5 + i*90/sheet.getLastRowNum());
//我将处理文件主体进度总量设置为90(5是加上解析部分的进度)
}
List<Role> roles = new ArrayList<>();
for (String rolename : roleWithPages.keySet()) {
Role role = repo.findByName(rolename);
role.setPages((Set<Page>) roleWithPages.get(rolename));
roles.add(role);
}
repo.save(roles);
session.setAttribute("progress", 100);//保存之后将进度设置为100
res.put("msg", "数据导入成功!");
return res;
}
进度条部分代码,很简单,就是读Session中progress的值
public int getProgress(HttpServletRequest request){
return (int) request.getSession().getAttribute("progress");
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# bootstrap实现进度条
# angularjs
# 进度条
# springboot
# bootstrap
# springboot带有进度条的上传功能完整实例
# spring MVC + bootstrap实现文件上传示例(带进度条)
# SpringBoot如何实现一个实时更新的进度条的示例代码
# 设置为
# 我将
# 上传
# 上传文件
# 是在
# 会在
# 用了
# 要做
# 很简单
# 只需要
# 不符合
# 后将
# 每隔
# 绑定
# 大家多多
# 就是在
# uib
# gt
# show
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
jQuery validate插件功能与用法详解
Java类加载基本过程详细介绍
php 三元运算符实例详细介绍
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
WEB开发之注册页面验证码倒计时代码的实现
如何构建满足综合性能需求的优质建站方案?
C语言设计一个闪闪的圣诞树
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
如何在阿里云域名上完成建站全流程?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel如何使用Service Container和依赖注入?(代码示例)
android nfc常用标签读取总结
Laravel如何使用模型观察者?(Observer代码示例)
北京网站制作的公司有哪些,北京白云观官方网站?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
利用vue写todolist单页应用
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Android中AutoCompleteTextView自动提示
浅谈redis在项目中的应用
深圳网站制作平台,深圳市做网站好的公司有哪些?
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
简单实现Android文件上传
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
如何彻底删除建站之星生成的Banner?
Laravel怎么判断请求类型_Laravel Request isMethod用法
实现点击下箭头变上箭头来回切换的两种方法【推荐】
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
教你用AI润色文章,让你的文字表达更专业
JavaScript如何实现路由_前端路由原理是什么
网易LOFTER官网链接 老福特网页版登录地址
网站制作软件有哪些,制图软件有哪些?
Laravel如何使用.env文件管理环境变量?(最佳实践)
详解Android图表 MPAndroidChart折线图
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
java获取注册ip实例
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
如何在IIS中新建站点并解决端口绑定冲突?
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何用VPS主机快速搭建个人网站?
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
如何生成腾讯云建站专用兑换码?
如何在Windows 2008云服务器安全搭建网站?
如何在万网ECS上快速搭建专属网站?
如何快速登录WAP自助建站平台?
如何快速搭建高效简练网站?
如何快速使用云服务器搭建个人网站?

