This commit is contained in:
2026-02-02 15:03:50 +09:00
parent 0228ece712
commit c8167485d1
158 changed files with 7989 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
package com.kamco.cd.kamcoback.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QCommonDateEntity is a Querydsl query type for CommonDateEntity
*/
@Generated("com.querydsl.codegen.DefaultSupertypeSerializer")
public class QCommonDateEntity extends EntityPathBase<CommonDateEntity> {
private static final long serialVersionUID = 1355779051L;
public static final QCommonDateEntity commonDateEntity = new QCommonDateEntity("commonDateEntity");
public final DateTimePath<java.time.ZonedDateTime> createdDate = createDateTime("createdDate", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> modifiedDate = createDateTime("modifiedDate", java.time.ZonedDateTime.class);
public QCommonDateEntity(String variable) {
super(CommonDateEntity.class, forVariable(variable));
}
public QCommonDateEntity(Path<? extends CommonDateEntity> path) {
super(path.getType(), path.getMetadata());
}
public QCommonDateEntity(PathMetadata metadata) {
super(CommonDateEntity.class, metadata);
}
}

View File

@@ -0,0 +1,53 @@
package com.kamco.cd.kamcoback.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QMapInkx50kEntity is a Querydsl query type for MapInkx50kEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapInkx50kEntity extends EntityPathBase<MapInkx50kEntity> {
private static final long serialVersionUID = 1410103956L;
public static final QMapInkx50kEntity mapInkx50kEntity = new QMapInkx50kEntity("mapInkx50kEntity");
public final QCommonDateEntity _super = new QCommonDateEntity(this);
//inherited
public final DateTimePath<java.time.ZonedDateTime> createdDate = _super.createdDate;
public final NumberPath<Integer> fid = createNumber("fid", Integer.class);
public final ComparablePath<org.locationtech.jts.geom.Geometry> geom = createComparable("geom", org.locationtech.jts.geom.Geometry.class);
public final StringPath mapidcdNo = createString("mapidcdNo");
public final StringPath mapidNm = createString("mapidNm");
public final StringPath mapidNo = createString("mapidNo");
//inherited
public final DateTimePath<java.time.ZonedDateTime> modifiedDate = _super.modifiedDate;
public QMapInkx50kEntity(String variable) {
super(MapInkx50kEntity.class, forVariable(variable));
}
public QMapInkx50kEntity(Path<? extends MapInkx50kEntity> path) {
super(path.getType(), path.getMetadata());
}
public QMapInkx50kEntity(PathMetadata metadata) {
super(MapInkx50kEntity.class, metadata);
}
}

View File

@@ -0,0 +1,67 @@
package com.kamco.cd.kamcoback.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.dsl.PathInits;
/**
* QMapInkx5kEntity is a Querydsl query type for MapInkx5kEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapInkx5kEntity extends EntityPathBase<MapInkx5kEntity> {
private static final long serialVersionUID = 372911320L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QMapInkx5kEntity mapInkx5kEntity = new QMapInkx5kEntity("mapInkx5kEntity");
public final QCommonDateEntity _super = new QCommonDateEntity(this);
//inherited
public final DateTimePath<java.time.ZonedDateTime> createdDate = _super.createdDate;
public final NumberPath<Integer> fid = createNumber("fid", Integer.class);
public final ComparablePath<org.locationtech.jts.geom.Geometry> geom = createComparable("geom", org.locationtech.jts.geom.Geometry.class);
public final StringPath mapidcdNo = createString("mapidcdNo");
public final StringPath mapidNm = createString("mapidNm");
public final QMapInkx50kEntity mapInkx50k;
//inherited
public final DateTimePath<java.time.ZonedDateTime> modifiedDate = _super.modifiedDate;
public final EnumPath<com.kamco.cd.kamcoback.enums.CommonUseStatus> useInference = createEnum("useInference", com.kamco.cd.kamcoback.enums.CommonUseStatus.class);
public QMapInkx5kEntity(String variable) {
this(MapInkx5kEntity.class, forVariable(variable), INITS);
}
public QMapInkx5kEntity(Path<? extends MapInkx5kEntity> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QMapInkx5kEntity(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QMapInkx5kEntity(PathMetadata metadata, PathInits inits) {
this(MapInkx5kEntity.class, metadata, inits);
}
public QMapInkx5kEntity(Class<? extends MapInkx5kEntity> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.mapInkx50k = inits.isInitialized("mapInkx50k") ? new QMapInkx50kEntity(forProperty("mapInkx50k")) : null;
}
}

View File

@@ -0,0 +1,65 @@
package com.kamco.cd.kamcoback.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QMapSheetMngEntity is a Querydsl query type for MapSheetMngEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapSheetMngEntity extends EntityPathBase<MapSheetMngEntity> {
private static final long serialVersionUID = 263967671L;
public static final QMapSheetMngEntity mapSheetMngEntity = new QMapSheetMngEntity("mapSheetMngEntity");
public final DateTimePath<java.time.ZonedDateTime> createdDttm = createDateTime("createdDttm", java.time.ZonedDateTime.class);
public final NumberPath<Long> createdUid = createNumber("createdUid", Long.class);
public final StringPath mngPath = createString("mngPath");
public final StringPath mngState = createString("mngState");
public final DateTimePath<java.time.ZonedDateTime> mngStateDttm = createDateTime("mngStateDttm", java.time.ZonedDateTime.class);
public final NumberPath<Integer> mngYyyy = createNumber("mngYyyy", Integer.class);
public final DateTimePath<java.time.ZonedDateTime> syncCheckEndDttm = createDateTime("syncCheckEndDttm", java.time.ZonedDateTime.class);
public final StringPath syncCheckState = createString("syncCheckState");
public final DateTimePath<java.time.ZonedDateTime> syncCheckStrtDttm = createDateTime("syncCheckStrtDttm", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> syncEndDttm = createDateTime("syncEndDttm", java.time.ZonedDateTime.class);
public final StringPath syncState = createString("syncState");
public final DateTimePath<java.time.ZonedDateTime> syncStateDttm = createDateTime("syncStateDttm", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> syncStrtDttm = createDateTime("syncStrtDttm", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> updatedDttm = createDateTime("updatedDttm", java.time.ZonedDateTime.class);
public final NumberPath<Long> updatedUid = createNumber("updatedUid", Long.class);
public QMapSheetMngEntity(String variable) {
super(MapSheetMngEntity.class, forVariable(variable));
}
public QMapSheetMngEntity(Path<? extends MapSheetMngEntity> path) {
super(path.getType(), path.getMetadata());
}
public QMapSheetMngEntity(PathMetadata metadata) {
super(MapSheetMngEntity.class, metadata);
}
}

View File

@@ -0,0 +1,57 @@
package com.kamco.cd.kamcoback.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QMapSheetMngFileEntity is a Querydsl query type for MapSheetMngFileEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapSheetMngFileEntity extends EntityPathBase<MapSheetMngFileEntity> {
private static final long serialVersionUID = 224763475L;
public static final QMapSheetMngFileEntity mapSheetMngFileEntity = new QMapSheetMngFileEntity("mapSheetMngFileEntity");
public final BooleanPath fileDel = createBoolean("fileDel");
public final StringPath fileExt = createString("fileExt");
public final StringPath fileName = createString("fileName");
public final StringPath filePath = createString("filePath");
public final NumberPath<Long> fileSize = createNumber("fileSize", Long.class);
public final StringPath fileState = createString("fileState");
public final NumberPath<Long> fileUid = createNumber("fileUid", Long.class);
public final NumberPath<Long> hstUid = createNumber("hstUid", Long.class);
public final StringPath mapSheetNum = createString("mapSheetNum");
public final NumberPath<Integer> mngYyyy = createNumber("mngYyyy", Integer.class);
public final StringPath refMapSheetNum = createString("refMapSheetNum");
public QMapSheetMngFileEntity(String variable) {
super(MapSheetMngFileEntity.class, forVariable(variable));
}
public QMapSheetMngFileEntity(Path<? extends MapSheetMngFileEntity> path) {
super(path.getType(), path.getMetadata());
}
public QMapSheetMngFileEntity(PathMetadata metadata) {
super(MapSheetMngFileEntity.class, metadata);
}
}

View File

@@ -0,0 +1,111 @@
package com.kamco.cd.kamcoback.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.dsl.PathInits;
/**
* QMapSheetMngHstEntity is a Querydsl query type for MapSheetMngHstEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapSheetMngHstEntity extends EntityPathBase<MapSheetMngHstEntity> {
private static final long serialVersionUID = 2031221176L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QMapSheetMngHstEntity mapSheetMngHstEntity = new QMapSheetMngHstEntity("mapSheetMngHstEntity");
public final QCommonDateEntity _super = new QCommonDateEntity(this);
//inherited
public final DateTimePath<java.time.ZonedDateTime> createdDate = _super.createdDate;
public final NumberPath<Long> createdUid = createNumber("createdUid", Long.class);
public final StringPath dataState = createString("dataState");
public final DateTimePath<java.time.ZonedDateTime> dataStateDttm = createDateTime("dataStateDttm", java.time.ZonedDateTime.class);
public final NumberPath<Long> hstUid = createNumber("hstUid", Long.class);
public final QMapInkx5kEntity mapInkx5kByCode;
public final NumberPath<Integer> mapSheetCodeSrc = createNumber("mapSheetCodeSrc", Integer.class);
public final StringPath mapSheetName = createString("mapSheetName");
public final StringPath mapSheetNum = createString("mapSheetNum");
public final StringPath mapSheetPath = createString("mapSheetPath");
public final NumberPath<Integer> mngYyyy = createNumber("mngYyyy", Integer.class);
//inherited
public final DateTimePath<java.time.ZonedDateTime> modifiedDate = _super.modifiedDate;
public final StringPath refMapSheetNum = createString("refMapSheetNum");
public final NumberPath<Integer> scaleRatio = createNumber("scaleRatio", Integer.class);
public final DateTimePath<java.time.ZonedDateTime> syncCheckEndDttm = createDateTime("syncCheckEndDttm", java.time.ZonedDateTime.class);
public final StringPath syncCheckState = createString("syncCheckState");
public final DateTimePath<java.time.ZonedDateTime> syncCheckStrtDttm = createDateTime("syncCheckStrtDttm", java.time.ZonedDateTime.class);
public final StringPath syncCheckTfwFileName = createString("syncCheckTfwFileName");
public final StringPath syncCheckTifFileName = createString("syncCheckTifFileName");
public final DateTimePath<java.time.ZonedDateTime> syncEndDttm = createDateTime("syncEndDttm", java.time.ZonedDateTime.class);
public final StringPath syncState = createString("syncState");
public final DateTimePath<java.time.ZonedDateTime> syncStrtDttm = createDateTime("syncStrtDttm", java.time.ZonedDateTime.class);
public final StringPath syncTfwFileName = createString("syncTfwFileName");
public final StringPath syncTifFileName = createString("syncTifFileName");
public final NumberPath<Long> tfwSizeBytes = createNumber("tfwSizeBytes", Long.class);
public final NumberPath<Long> tifSizeBytes = createNumber("tifSizeBytes", Long.class);
public final NumberPath<Long> totalSizeBytes = createNumber("totalSizeBytes", Long.class);
public final NumberPath<Long> updatedUid = createNumber("updatedUid", Long.class);
public final StringPath useInference = createString("useInference");
public final DateTimePath<java.time.ZonedDateTime> useInferenceDttm = createDateTime("useInferenceDttm", java.time.ZonedDateTime.class);
public QMapSheetMngHstEntity(String variable) {
this(MapSheetMngHstEntity.class, forVariable(variable), INITS);
}
public QMapSheetMngHstEntity(Path<? extends MapSheetMngHstEntity> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QMapSheetMngHstEntity(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QMapSheetMngHstEntity(PathMetadata metadata, PathInits inits) {
this(MapSheetMngHstEntity.class, metadata, inits);
}
public QMapSheetMngHstEntity(Class<? extends MapSheetMngHstEntity> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.mapInkx5kByCode = inits.isInitialized("mapInkx5kByCode") ? new QMapInkx5kEntity(forProperty("mapInkx5kByCode"), inits.get("mapInkx5kByCode")) : null;
}
}

View File

@@ -0,0 +1,55 @@
package com.kamco.cd.kamcoback.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.dsl.PathInits;
/**
* QMapSheetMngYearYnEntity is a Querydsl query type for MapSheetMngYearYnEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapSheetMngYearYnEntity extends EntityPathBase<MapSheetMngYearYnEntity> {
private static final long serialVersionUID = 1594858377L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QMapSheetMngYearYnEntity mapSheetMngYearYnEntity = new QMapSheetMngYearYnEntity("mapSheetMngYearYnEntity");
public final DateTimePath<java.time.ZonedDateTime> createdDttm = createDateTime("createdDttm", java.time.ZonedDateTime.class);
public final QMapSheetMngYearYnEntityId id;
public final DateTimePath<java.time.ZonedDateTime> updatedDttm = createDateTime("updatedDttm", java.time.ZonedDateTime.class);
public final StringPath yn = createString("yn");
public QMapSheetMngYearYnEntity(String variable) {
this(MapSheetMngYearYnEntity.class, forVariable(variable), INITS);
}
public QMapSheetMngYearYnEntity(Path<? extends MapSheetMngYearYnEntity> path) {
this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
}
public QMapSheetMngYearYnEntity(PathMetadata metadata) {
this(metadata, PathInits.getFor(metadata, INITS));
}
public QMapSheetMngYearYnEntity(PathMetadata metadata, PathInits inits) {
this(MapSheetMngYearYnEntity.class, metadata, inits);
}
public QMapSheetMngYearYnEntity(Class<? extends MapSheetMngYearYnEntity> type, PathMetadata metadata, PathInits inits) {
super(type, metadata, inits);
this.id = inits.isInitialized("id") ? new QMapSheetMngYearYnEntityId(forProperty("id")) : null;
}
}

View File

@@ -0,0 +1,39 @@
package com.kamco.cd.kamcoback.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QMapSheetMngYearYnEntityId is a Querydsl query type for MapSheetMngYearYnEntityId
*/
@Generated("com.querydsl.codegen.DefaultEmbeddableSerializer")
public class QMapSheetMngYearYnEntityId extends BeanPath<MapSheetMngYearYnEntityId> {
private static final long serialVersionUID = -644422012L;
public static final QMapSheetMngYearYnEntityId mapSheetMngYearYnEntityId = new QMapSheetMngYearYnEntityId("mapSheetMngYearYnEntityId");
public final StringPath mapSheetNum = createString("mapSheetNum");
public final NumberPath<Integer> mngYyyy = createNumber("mngYyyy", Integer.class);
public QMapSheetMngYearYnEntityId(String variable) {
super(MapSheetMngYearYnEntityId.class, forVariable(variable));
}
public QMapSheetMngYearYnEntityId(Path<? extends MapSheetMngYearYnEntityId> path) {
super(path.getType(), path.getMetadata());
}
public QMapSheetMngYearYnEntityId(PathMetadata metadata) {
super(MapSheetMngYearYnEntityId.class, metadata);
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
com.kamco.cd.kamcoback.KamcoBackApplication

View File

@@ -0,0 +1,67 @@
server:
port: 9080
spring:
application:
name: imagery-make-dataset
profiles:
active: local # 사용할 프로파일 지정 (ex. dev, prod, test)
datasource:
url: jdbc:postgresql://192.168.2.127:15432/kamco_cds
#url: jdbc:postgresql://localhost:5432/kamco_cds
username: kamco_cds
password: kamco_cds_Q!W@E#R$
hikari:
minimum-idle: 1
maximum-pool-size: 5
jpa:
hibernate:
ddl-auto: update # 테이블이 없으면 생성, 있으면 업데이트
properties:
hibernate:
jdbc:
batch_size: 50
default_batch_fetch_size: 100
logging:
level:
root: INFO
org.springframework.web: DEBUG
org.springframework.security: DEBUG
# 헬스체크 노이즈 핵심만 다운
org.springframework.security.web.FilterChainProxy: INFO
org.springframework.security.web.authentication.AnonymousAuthenticationFilter: INFO
org.springframework.security.web.authentication.Http403ForbiddenEntryPoint: INFO
org.springframework.web.servlet.DispatcherServlet: INFO
# actuator
management:
health:
readinessstate:
enabled: true
livenessstate:
enabled: true
endpoint:
health:
probes:
enabled: true
show-details: always
endpoints:
jmx:
exposure:
exclude: "*"
web:
base-path: /monitor
exposure:
include:
- "health"
file:
#sync-root-dir: D:/kamco-nfs/images/
sync-root-dir: /kamco-nfs/images/
sync-tmp-dir: ${file.sync-root-dir}/tmp
sync-file-extention: tfw,tif
sync-auto-exception-start-year: 2025
sync-auto-exception-before-year-cnt: 3

View File

@@ -0,0 +1,137 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Chunk Upload Test</title>
</head>
<body>
<h2>대용량 파일 청크 업로드 테스트</h2>
* Chunk 테스트 사이즈 10M (10 * 1024 * 1024) - 성능에 따라 변경가능<br><br>
* 업로드 API선택</br></br>
<select name="apiUrl" id="apiUrl" style="width:600px;height:40px;">
<option value="/api/model/file-chunk-upload">모델파일Chunk업로드 ( /api/model/file-chunk-upload )</option>
<option value="/api/upload/file-chunk-upload">파일Chunk업로드(공통) ( /api/upload/file-chunk-upload )</option>
</select>
<br><br>
* 파일첨부<br><br>
<input type="file" id="chunkFile" style="height:40px;"><br><br>
<button onclick="startUpload()" style="height:40px;">업로드 시작</button>
<br><br><br><br>
* 업로드시 업로드 이력을 추적하기 위해 UUID생성해서 전달(파일병합시 사용)(script 예제참고)</br></br>
UUID : <input id="uuid" name="uuid" value="" style="width:300px;height:30px;" readonly><br><br>
* API 호출시 파일정보 추출해서 자동 할당해야 함.(script 예제참고)</br></br>
chunkIndex : <input style="height:30px;" id="chunkIndex" placeholder="chunkIndex" readonly><br><br>
chunkTotalIndex : <input style="height:30px;" id="chunkTotalIndex" placeholder="chunkTotalIndex" readonly ><br><br>
* API 호출시 파일정보 추출해서 자동 할당해야 함.(script 예제참고)</br></br>
fileSize : <input style="height:30px;" id="fileSize" placeholder="fileSize" readonly><br><br>
<!--
fileHash : <input id="fileHash" placeholder="fileHash"><br><br> -->
<br><br>
* 진행율(%)</br></br>
<div style="width:500px;height:30px;border:1px solid #cccccc;"><div id="prgssbar" style="width:100%;height:30px;background:#eeeeee;"></div></div>
<br><br>
* 결과메세지</br></br>
<div id="status" style="padding:20px;width:1200px;height:600px;border:1px solid #000000;"></div>
<script>
async function startUpload() {
const apiUrl = document.getElementById('apiUrl').value;
const file = document.getElementById('chunkFile').files[0];
const fileName = file.name;
//const datasetUid = Number(document.getElementById('datasetUid').value);
//const chunkIndex = document.getElementById('chunkIndex').value;
if (!file) return alert("파일을 선택하세요.");
const CHUNK_SIZE = 10 * 1024 * 1024; // 5MB
const fileSize = file.size;
var totalChunks = Math.ceil(fileSize / CHUNK_SIZE);
const chunkTotalIndex = totalChunks - 1;
const uuid = crypto.randomUUID(); // 고유 ID 생성
//var uuid = "";
document.getElementById('uuid').value = uuid;
document.getElementById('fileSize').value = file.size;
document.getElementById('chunkTotalIndex').value = chunkTotalIndex;
for (let i = 0; i < totalChunks; i++) {
//for (let i = 0; i < 1; i++) {
const start = i * CHUNK_SIZE;
const end = Math.min(start + CHUNK_SIZE, file.size);
const chunk = file.slice(start, end);
document.getElementById('chunkIndex').value = i;
const formData = new FormData();
formData.append("uuid", uuid);
formData.append("fileSize", fileSize);
formData.append("fileName", fileName);
formData.append("chunkIndex", i);
formData.append("chunkTotalIndex", chunkTotalIndex);
formData.append("chunkFile", chunk);
try {
const response = await fetch(apiUrl, { method: 'POST', body: formData });
// 2. 응답 상태 확인 (200 OK 등)
if (!response.ok) {
throw new Error(`서버 에러: ${response.status}`);
}
// 3. 서버가 보낸 데이터 읽기 (JSON 형태라고 가정)
const result = await response.json();
document.getElementById('status').innerText = JSON.stringify(result, null, 2);
if( result.data.res != "success")
{
//오류 경고창 띄우는 것으로 처리하시면 됩니다.
break;
}
document.getElementById('prgssbar').style.width = result.data.uploadRate+"%";
} catch (error) {
console.error(`${i}번째 청크 업로드 실패:`, error);
break; // 오류 발생 시 중단
}
}
// 모든 청크 전송 후 최종 완료 요청
//var mergeResult = await completeUpload(uuid);
//document.getElementById('status').innerText = JSON.stringify(mergeResult, null, 2);
}
async function completeUpload(uuid) {
try {
const response = await fetch(`/api/upload/chunk-upload-complete/${uuid}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
});
if (!response.ok) {
throw new Error(`서ver 응답 에러: ${response.status}`);
}
const result = await response.json();
return result;
} catch (error) {
console.error("완료 요청 중 오류 발생:", error);
}
}
</script>
</body>
</html>

View File

@@ -0,0 +1,12 @@
Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.launch.JarLauncher
Start-Class: com.kamco.cd.kamcoback.KamcoBackApplication
Spring-Boot-Version: 3.5.7
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Build-Jdk-Spec: 21
Implementation-Title: kamco-map-sheet-image-job
Implementation-Version: 0.0.1-SNAPSHOT

View File

@@ -0,0 +1 @@
1