JavaScript를 사용하여 이미지 업로드

Migel Hewage Nimesha 2023년10월12일
  1. 자바스크립트 업로드 이미지
  2. 정의된 너비 또는 높이가 없는 JavaScript 업로드 이미지
JavaScript를 사용하여 이미지 업로드

사용자는 본문 섹션에 파일 형식의 입력 필드를 생성하여 HTML 파일에서 시작하여 이미지를 업로드할 수 있습니다. 이 기사에서는 JavaScript를 사용하여 이미지를 업로드하는 방법의 예를 보여줍니다.

자바스크립트 업로드 이미지

정의된 너비와 높이가 있는 출력으로 업로드될 이미지를 표시하기 위해 display_image라는 id와 함께 div 태그가 사용됩니다.

통사론:

<input type ="file" id ="image_input" accept ="image/jpeg, image/png, image/jpg">
<div id="display_image"></div>

업로드된 이미지가 내부에 완벽하게 맞도록 이미지 속성을 적절한 값으로 CSS 파일에 추가해야 합니다. 여기서 테두리는 반드시 추가해야 하는 필수 속성은 아니지만 사용자가 이미지가 나타나는 위치를 쉽게 볼 수 있도록 합니다.

#display-image{
width: 500px;
height: 325px;
border: 2px solid black;
background-position: center;
background-size: cover;
}

다음으로 입력 필드에 대한 액세스 권한을 얻고 사용자가 요소의 값을 변경했을 때 실행되는 이벤트인 "change" 이벤트 리스너를 첨부하기 위해 JavaScript 파일을 생성해야 합니다. 이 리스너 아래에서 사용자는 웹 애플리케이션이 사용자의 로컬 시스템에 저장된 파일 또는 원시 데이터 버퍼의 내용을 읽고 "load" 이벤트 리스너를 첨부할 수 있도록 하는 FileReader 개체에 대한 액세스 권한을 얻어야 합니다. 이미지, CSS 파일 및 JavaScript 파일과 같은 모든 종속 소스를 포함하여 전체 페이지가 완전히 로드됩니다.

간단히 말해서 업로드된 이미지는 표시 가능한 형식으로 변환됩니다. 업로드된 이미지는 uploadImage 변수에 저장되며 이 변수는 CSS에서 backgroundImage 속성을 초기화하는 데 사용됩니다.

const image_input = document.querySelector('#image_input');

image_input.addEventListener('change', function() {
  const file_reader = new FileReader();
  file_reader.addEventListener('load', () => {
    const uploaded_image = file_reader.result;
    document.querySelector('#display_image').style.backgroundImage =
        `url(${uploaded_image})`;
  });
  file_reader.readAsDataURL(this.files[0]);
});

전체 소스 코드:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript Upload Image </title>
<style>
#display_image{
  width: 500px;
  height: 325px;
  border: 2px solid black;
  background-position: center;
  background-size: cover;
}
</style>
</head>

<body>

  <input type="file" id="image_input" accept="image/jpeg, image/png, image/jpg">
  <div id="display_image"></div>

<script>
const image_input = document.querySelector("#image_input");

image_input.addEventListener("change", function() {
  const file_reader = new FileReader();
  file_reader.addEventListener("load", () => {
    const uploaded_image = file_reader.result;
    document.querySelector("#display_image").style.backgroundImage = `url(${uploaded_image})`;
  });
  file_reader.readAsDataURL(this.files[0]);
});
</script>
</body>
</html>

출력:

정의된 너비와 높이가 있는 자바스크립트를 사용하여 이미지 업로드

정의된 너비 또는 높이가 없는 JavaScript 업로드 이미지

JavaScript에서 정의된 너비 또는 높이 없이 이미지를 원래 크기로 업로드할 수도 있습니다. 아래 단계를 따르십시오.

  • HTML 파일을 생성하여 시작하고 업로드된 이미지를 호출할 onchange 함수 filevalidation()를 사용하여 ID를 파일로 할당하는 입력 유형 파일을 설정합니다.
  • 다음으로 var image = document.getElementById(‘uploaded image’);를 통해 ID로 요소를 선택하기 위해 filevaildation() 함수 내에서 문서 메소드 .getElementById()를 사용합니다.
  • 정적 메서드 URL.createObjectURL()을 프로그램에 추가하여 URL을 uploaded_image.src로 전달하여 브라우저에서 사용자가 업로드한 이미지를 uploaded_image.src=URL.createObjectURL(event.target.files[0]);.
  • 사용자가 어떤 파일을 선택했는지 확인하기 위해 if(selected_file.files.length>0)로 루프를 만들고 선택한 파일의 크기를 얻기 위해 const file_size=selected_file.files.item(i).size; 사용할 수 있습니다.
  • 다음으로 파일 크기가 바이트로 변환됩니다. Math.round((file_size/1024)); 사용 기능 그것은 어떤 단위로 변환될 수 있습니다.

전체 소스 코드:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JavaScript Upload Image</title>
</head>
<body>
    <input type="file" id="file" onchange="FileValidation(event)" >
    <br><br><br>
    <h2>Uploaded Image by the User</h2>
    <img id="uploaded image">
</body>
<script>
    FileValidation = (event) => {
        var uploaded_image = document.getElementById('uploaded image');
    uploaded_image.src = URL.createObjectURL(event.target.files[0]);
        const selected_file = document.getElementById("file");
        if (selected_file.files.length > 0) {
            for (const i = 0; i <= selected_file.files.length - 1; i++) {
                const file_size = selected_file.files.item(i).size;

                const file = Math.round((file_size / 1024));
                }
                }
                }
</script>
</html>

출력:

정의된 너비와 높이 없이 자바스크립트를 사용하여 이미지 업로드

위의 코드에서 사용자가 모든 파일 형식을 선택하여 업로드할 수 있지만 표시할 수는 없습니다. 추가 구현을 통해 요구 사항에 따라 위의 프로그램에 더 많은 코딩을 추가하여 여러 이미지 업로드를 수행할 수 있습니다.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.