Javascript로 파일 업로드 필터링 및 유효성 검사
5207 단어 validationjavascript
나는 프런트엔드에서 똑같이 할 수 있다는 것을 깨닫기 전에 백엔드에서 검증과 필터링을 했다. 이것은 이중 계층 보호를 제공합니다. 음, 프런트 엔드에 대한 유효성 검사는 쉽게 우회할 수 있지만 적어도 견고성에 기여합니다.
다음은 HTML 또는 자바스크립트를 사용하여 프런트 엔드에서 이를 달성하는 방법입니다.
HTML만 사용
HTML에서는 accept 속성을 사용하여 파일 형식을 지정해야 합니다. 이를 통해 파일 업로드 버튼을 클릭한 후 나타나는 창에는 수락 속성에 지정된 파일만 표시됩니다.
<input type="file" multiple accept=".jpg, .png"/>
위의 예에서는 jpg 및 png 파일만 허용합니다. pdf 또는 docx와 같은 다른 파일 형식은 선택 창에 표시되지 않습니다.
이 방법은 사용자가 파일 선택 창에서 모든 파일을 클릭할 수 있으므로 사용자가 선택할 수 있는 모든 파일 유형(피하려는 파일 포함)을 표시하므로 실제로 강력하지 않습니다.
또한 여러 파일을 업로드할 수 있도록 여러 개를 포함했습니다.
또한 파일 크기를 제어할 수 없습니다. 여기서 자바스크립트가 등장합니다.
자바스크립트 사용
자바스크립트를 사용하면 파일과 함께 제공되는 크기 및 기타 메타데이터뿐만 아니라 파일 유형을 제어할 수 있습니다. 이 절차의 전체 아이디어는 파일을 업로드할 때 생성되는 파일 객체를 중심으로 이루어집니다. 이 파일 개체에는 이름, 크기, 수정 또는 생성 날짜 등과 같은 파일에 대한 정보가 들어 있습니다.
//attaching "change" event to the file upload button
document.getElementById("file").addEventListener("change", validateFile)
function validateFile(){
const allowedExtensions = ['jpg','png'],
sizeLimit = 1_000_000; // 1 megabyte
// destructuring file name and size from file object
const { name:fileName, size:fileSize } = this.files[0];
/*
* if filename is apple.png, we split the string to get ["apple","png"]
* then apply the pop() method to return the file extension
*
*/
const fileExtension = fileName.split(".").pop();
/*
check if the extension of the uploaded file is included
in our array of allowed file extensions
*/
if(!allowedExtensions.includes(fileExtension)){
alert("file type not allowed");
this.value = null;
}else if(fileSize > sizeLimit){
alert("file size too large")
this.value = null;
}
}
이 작업을 수행하는 더 좋은 방법이 있습니까? 아니면 내 설명이 혼란스럽습니까? 어떻게 개선할 수 있을까요? 댓글로 알려주세요. 읽어 주셔서 감사합니다
Reference
이 문제에 관하여(Javascript로 파일 업로드 필터링 및 유효성 검사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/faddalibrahim/filtering-and-validating-file-uploads-with-javascript-327p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)