웹 애플리케이션을 개발하다 보면, 프로젝트 내에 있는 이미지 파일을 불러와 <input type="file"> 요소에 직접 넣고, 이를 서버에 전송하고 싶은 상황이 생깁니다.
예를 들어, 기본 이미지가 정해져 있고 사용자가 수정하지 않는 경우, 해당 이미지를 별도의 선택 없이 자동으로 서버에 전달하는 방식으로 활용할 수 있습니다.
전체흐름 요약
1. 프로젝트 내부 이미지 경로를 받아 Base64 데이터로 변환
2. Base64 데이터를 File 객체로 변환
3. File 객체를 input[type=“file”] 요소에 삽입
4. 폼 전송
1. 이미지 경로를 base64 데이터로 변환
imgToBase64: function(file, maxWidth, maxHeight) {
let src = (typeof file === 'string') ? file : URL.createObjectURL(file);
return new Promise((resolve, reject) => {
let image = new Image();
image.onload = function () {
let canvas = document.createElement('canvas');
canvas.width = image.naturalWidth > maxWidth ? maxWidth : image.naturalWidth;
canvas.height = image.naturalWidth > maxHeight ? maxHeight : image.naturalHeight;
canvas.getContext('2d').drawImage(image, 0, 0, image.width, image.height);
let uri = canvas.toDataURL('image/png'); // base64 데이터 생성
resolve(uri);
};
image.src = src;
});
}
2. Base64 데이터를 File 객체로 변환
dataURLtoFile: function(dataurl, filename) {
let arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, { type: mime });
}
3. File 객체를 input[type=“file”] 요소에 삽입
function setImage(imgInfo) {
let fullPath = imgInfo.defaultImg;
let fileName = fullPath.split('\\').pop().split('/').pop();
WebUtil.imgToBase64(fullPath, imgInfo.widthSize, imgInfo.heightSize).then(resultData => {
let file = WebUtil.dataURLtoFile(resultData, fileName);
let container = new DataTransfer(); // FileList 대체용
container.items.add(file);
// 파일 input에 주입
$body.find('#fileSearchFormId')[0].files = container.files;
$body.find('#fileSearchFormId').eq(0).trigger('change'); // 업로드 트리거
});
}
위 방법대로 하면 사용자 인터랙션 없이도 html file 입력창에 기본 이미지파일을 등록가능하며 그 입력폼을 전송하여 서버에 파일을 전송가능!
'java > 내용정리' 카테고리의 다른 글
| 글로벌 시스템 만들 시 주의사항 : 국가별 시간 관리 (Java + Oracle + JavaScript) (1) | 2025.06.14 |
|---|---|
| JWT 정의 및 java 예제코드 정리 (0) | 2025.05.27 |
| Java : 문자열을 더하는 두 가지 방법 – StringBuilder.append() vs String 덧셈(+) 차이점 (0) | 2025.05.23 |
| HMAC 방식 암호화, SHA-256 알고리즘 적용한 예제 알아보기 (2) | 2025.05.23 |
| 이미지url을 업로드하자! URL형식 이미지 → HTML 업로드 처리 (2) | 2025.05.17 |
