[javascript] 자바스크립트로 파일 업로드 및 다운로드 프로그레스 바 만들기
파일을 업로드하거나 다운로드할 때 사용자에게 진행 상황을 시각적으로 표시하는 것은 좋은 사용자 경험을 제공합니다. 이번에는 자바스크립트를 사용하여 파일 업로드 및 다운로드의 프로그레스 바를 만드는 방법에 대해 알아보겠습니다.
파일 업로드 프로그레스 바
1. HTML 작성
먼저 파일을 업로드할 수 있는 HTML 폼을 작성합니다.
<form id="uploadForm" action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="fileInput">
<button type="submit">Upload</button>
</form>
<div id="uploadProgress">
<div id="progressBar"></div>
<div id="percent">0%</div>
</div>
2. JavaScript 작성
다음으로, 자바스크립트를 사용하여 파일 업로드 프로그레스를 실시간으로 업데이트합니다.
document.getElementById('uploadForm').addEventListener('submit', function(e) {
e.preventDefault();
let formData = new FormData(this);
fetch('/upload', {
method: 'POST',
body: formData
}).then(response => {
// handle upload success
}).catch(error => {
// handle upload error
});
let progressBar = document.getElementById('progressBar');
let percent = document.getElementById('percent');
// 파일 업로드 중인 진행 상황을 실시간으로 업데이트
let updateProgress = setInterval(function() {
fetch('/progress', {
method: 'GET'
}).then(response => response.json())
.then(data => {
progressBar.style.width = data.percent + '%';
percent.innerText = data.percent + '%';
if (data.percent === 100) {
clearInterval(updateProgress); // 진행 상황 업데이트 중지
}
});
}, 1000);
});
파일 다운로드 프로그레스 바
파일 다운로드의 경우, HTML과 자바스크립트를 사용하여 프로그레스 바를 만들 수 있습니다.
1. HTML 작성
파일을 다운로드하는 버튼을 HTML에 추가합니다.
<a href="/download/file" download>
<button>Download</button>
</a>
<div id="downloadProgress">
<div id="progressBar"></div>
<div id="percent">0%</div>
</div>
2. JavaScript 작성
파일 다운로드 프로그레스를 표시하기 위해 자바스크립트를 추가합니다.
document.querySelector('a').addEventListener('click', function(e) {
e.preventDefault();
let progressBar = document.getElementById('progressBar');
let percent = document.getElementById('percent');
let downloadProgress = setInterval(function() {
fetch('/download/progress', {
method: 'GET'
}).then(response => response.json())
.then(data => {
progressBar.style.width = data.percent + '%';
percent.innerText = data.percent + '%';
if (data.percent === 100) {
clearInterval(downloadProgress); // 진행 상황 업데이트 중지
}
});
}, 1000);
});
위의 코드를 통해 파일 업로드 및 다운로드 프로그레스 바를 구현할 수 있습니다. 사용자는 파일 전송의 진행 상황을 실시간으로 확인할 수 있어 편리하게 사용할 수 있습니다.