Spring Boot+AngularJS+BootStrap 진행 표시 줄 예제 코드 구현
의 원리
진도 바 의 원 리 는 파일 을 업로드 할 때 프로그램 이 어느 부분 으로 실 행 될 때 Session 에 1 에서 100 의 값 을 설정 하 는 것 이다.그리고 프론트 데스크 는 아주 작은 시간 마다 이 값 을 요청 합 니 다.
AngularJS 에서$http 대상 은 세 가지 상태 가 있 는데 그것 이 바로 success,progress,error 이다.그 중에서 progress 방법 은 success 방법 이 호출 되 기 전에(즉 업로드 가 완료 되 기 전에)끊임없이 호출 된다.우리 가 해 야 할 일 은 progress 에 요청 을 추가 하고 배경 으로 가서 session 에 설 치 된 값 을 가 져 오 는 것 입 니 다.
코드,여기 서 파일 을 업로드 하 는 플러그 인 을 사 용 했 습 니 다.ng-file-uproad 라 고 합 니 다.
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;
}
진도 항목 부분 코드,간단 합 니 다.세 션 에서 progress 의 값 을 읽 는 것 입 니 다.
public int getProgress(HttpServletRequest request){
return (int) request.getSession().getAttribute("progress");
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AngularJS의 ng-options best practise쓸데없는 말은 하지 말고 바로 코드를 찍어라. 리소스를api에 직접 전달하지 말고 문자열이나 정형(예를 들어 귀속된ng-model="selected")을 권장합니다 angular에서 생성된 의value가 무엇인지, ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.