88 lines
2.0 KiB
HTML
88 lines
2.0 KiB
HTML
<!doctype html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>학습데이터 ZIP 다운로드</title>
|
|
</head>
|
|
<body>
|
|
<h3>학습데이터 ZIP 다운로드</h3>
|
|
|
|
UUID:
|
|
<input id="uuid" value="95cb116c-380a-41c0-98d8-4d1142f15bbf" />
|
|
<br><br>
|
|
modelVer:
|
|
<input id="moderVer" value="G2.HPs_0001.95cb116c-380a-41c0-98d8-4d1142f15bbf" />
|
|
<br><br>
|
|
|
|
JWT Token:
|
|
<input id="token" style="width:600px;" placeholder="Bearer 토큰 붙여넣기" />
|
|
<br><br>
|
|
|
|
<button onclick="download()">다운로드</button>
|
|
|
|
<br><br>
|
|
<progress id="bar" value="0" max="100" style="width:400px;"></progress>
|
|
<div id="status"></div>
|
|
|
|
<script>
|
|
async function download() {
|
|
const uuid = document.getElementById("uuid").value.trim();
|
|
const moderVer = document.getElementById("moderVer").value.trim();
|
|
const token = document.getElementById("token").value.trim();
|
|
|
|
if (!uuid) {
|
|
alert("UUID 입력하세요");
|
|
return;
|
|
}
|
|
|
|
if (!token) {
|
|
alert("토큰 입력하세요");
|
|
return;
|
|
}
|
|
|
|
const url = `/api/models/download/${uuid}`;
|
|
|
|
const res = await fetch(url, {
|
|
headers: {
|
|
"Authorization": token.startsWith("Bearer ")
|
|
? token
|
|
: `Bearer ${token}`,
|
|
"kamco-download-uuid": uuid
|
|
}
|
|
});
|
|
|
|
if (!res.ok) {
|
|
document.getElementById("status").innerText =
|
|
"실패: " + res.status;
|
|
return;
|
|
}
|
|
|
|
const total = parseInt(res.headers.get("Content-Length") || "0", 10);
|
|
const reader = res.body.getReader();
|
|
const chunks = [];
|
|
let received = 0;
|
|
|
|
while (true) {
|
|
const { done, value } = await reader.read();
|
|
if (done) break;
|
|
chunks.push(value);
|
|
received += value.length;
|
|
|
|
if (total) {
|
|
document.getElementById("bar").value =
|
|
(received / total) * 100;
|
|
}
|
|
}
|
|
|
|
const blob = new Blob(chunks);
|
|
const a = document.createElement("a");
|
|
a.href = URL.createObjectURL(blob);
|
|
a.download = moderVer + ".zip";
|
|
a.click();
|
|
|
|
document.getElementById("status").innerText = "완료 ✅";
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|