[JQUERY] 업로드 파일 전에 파일 확장자의 검증
JQUERY업로드 파일 전에 파일 확장자의 검증
해결법
-
1.그것은 단지 파일 확장자를 확인하는 것이 가능하지만, 사용자가 쉽게 이름 바꾸기 virus.exe에 virus.jpg 및 검증을 "통과"할 수 있습니다.
그것은 단지 파일 확장자를 확인하는 것이 가능하지만, 사용자가 쉽게 이름 바꾸기 virus.exe에 virus.jpg 및 검증을 "통과"할 수 있습니다.
(잘못된 파일을 선택하고 작업의 알림을 볼 제출하려고) : 무엇의 가치를 들어, 여기에 파일 확장자를 확인하는 코드이며, 유효한 확장 중 하나를 충족하지 않을 경우 중단
VAR의 _validFileExtensions = ".png를" ".gif 중요" ".JPG", ".JPEG", ".BMP"]; 검증 함수 (oForm) { VAR arrInputs = oForm.getElementsByTagName ( "입력"); 경우 (나는
0) { VAR blnValid 거짓 =; 대 (VAR의 J = 0; J <_validFileExtensions.length, J ++) { VAR sCurExtension = _validFileExtensions [J] (- sCurExtension.length, sCurExtension.length) .toLowerCase () == sCurExtension.toLowerCase () sFileName.substr (sFileName.length) {만약 blnValid 사실 =; 단절; } } 만약 (! blnValid) { 경고 ( "죄송합니다"+ sFileName + ", 허용 확장은 무효입니다 :"+ _validFileExtensions.join ( ",")); false를 반환; } } } } true를 반환; } 참고 코드가 필요 않다면 (sFileName.length> 0) {하고 동료 닫는 대괄호의 경우, 줄을 제거 ... 파일을 선택하지 않고 전송에 대한 사용자를 허용합니다. 코드는 관계없이 그 이름의 형태로 모든 파일 입력 유효성을 검사합니다.
이것은 적은 라인에 jQuery를 함께 할 수있는,하지만 난 "원시"자바 스크립트와 최종 결과에 편안 충분이 동일 해요.
경우 당신은 더 많은 파일을, 또는 파일을 변경시 및뿐만 아니라 양식 제출에 검사를 트리거 할 대신 같은 코드를 사용 :
VAR의 _validFileExtensions = ".png를" ".gif 중요" ".JPG", ".JPEG", ".BMP"]; 함수 ValidateSingleInput (oInput) { (oInput.type == "파일") {경우 VAR sFileName = oInput.value; 경우 (sFileName.length> 0) { VAR blnValid 거짓 =; 대 (VAR의 J = 0; J <_validFileExtensions.length, J ++) { VAR sCurExtension = _validFileExtensions [J] (- sCurExtension.length, sCurExtension.length) .toLowerCase () == sCurExtension.toLowerCase () sFileName.substr (sFileName.length) {만약 blnValid 사실 =; 단절; } } 만약 (! blnValid) { 경고 ( "죄송합니다"+ sFileName + ", 허용 확장은 무효입니다 :"+ _validFileExtensions.join ( ",")); oInput.value = ""; false를 반환; } } } true를 반환; } 파일 1 :
파일 2 :
파일 3 :이 경고를 표시하고 잘못된 파일 확장자의 경우 입력을 재설정합니다.
-
2.기존 답변 없음 요청의 단순화를 위해 매우 컴팩트 충분히 보이지 않았다. 주어진 파일 입력 필드는 다음과 같이 수행 할 수 있습니다 세트에서 확장이 있는지 확인 :
기존 답변 없음 요청의 단순화를 위해 매우 컴팩트 충분히 보이지 않았다. 주어진 파일 입력 필드는 다음과 같이 수행 할 수 있습니다 세트에서 확장이 있는지 확인 :
function hasExtension(inputID, exts) { var fileName = document.getElementById(inputID).value; return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName); }
예를 들어, 사용이 될 수 있도록 (여기서 업로드 파일 입력의 ID입니다) :
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) { // ... block upload }
아니면 jQuery 플러그인과 같은 :
$.fn.hasExtension = function(exts) { return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val()); }
사용 예제 :
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) { // ... block upload }
.replace (/\./ g '는 \\.')이 기본 정보가 임의의 문자와 일치하는 점이없이 전달 될 수 있도록하기위한 정규 표현식 도트가 탈출하는 것이다.
오류 검사가 짧게 유지하는 이들에 없습니다, 당신이 그들을 사용 아마도 경우는 반드시 입력이 먼저 존재하고 확장 배열이 유효 할 것이다!
-
3.
$(function () { $('input[type=file]').change(function () { var val = $(this).val().toLowerCase(), regex = new RegExp("(.*?)\.(docx|doc|pdf|xml|bmp|ppt|xls)$"); if (!(regex.test(val))) { $(this).val(''); alert('Please select correct file format'); } }); });
-
4.내가 대답을 잘 아무도 여기에 아주 ... 시적 없었다 때문에 내가 여기 온 :
내가 대답을 잘 아무도 여기에 아주 ... 시적 없었다 때문에 내가 여기 온 :
checkextension 함수 () { var 파일은 document.querySelector ( "#의 fUpload을") =; 경우 (/\.(jpe?g|png|gif)$/i.test(file.files[0].name) === 거짓) {경고 ( "없습니다 이미지!"); } }
-
5.확인 해당 파일을 선택하거나하지 않은 경우
확인 해당 파일을 선택하거나하지 않은 경우
if (document.myform.elements["filefield"].value == "") { alert("You forgot to attach file!"); document.myform.elements["filefield"].focus(); return false; }
파일 확장자를 확인
var res_field = document.myform.elements["filefield"].value; var extension = res_field.substr(res_field.lastIndexOf('.') + 1).toLowerCase(); var allowedExtensions = ['doc', 'docx', 'txt', 'pdf', 'rtf']; if (res_field.length > 0) { if (allowedExtensions.indexOf(extension) === -1) { alert('Invalid file Format. Only ' + allowedExtensions.join(', ') + ' are allowed.'); return false; } }
-
6.나는이 예제를 좋아한다 :
나는이 예제를 좋아한다 :
<asp:FileUpload ID="fpImages" runat="server" title="maximum file size 1 MB or less" onChange="return validateFileExtension(this)" /> <script language="javascript" type="text/javascript"> function ValidateFileUpload(Source, args) { var fuData = document.getElementById('<%= fpImages.ClientID %>'); var FileUploadPath = fuData.value; if (FileUploadPath == '') { // There is no file selected args.IsValid = false; } else { var Extension = FileUploadPath.substring(FileUploadPath.lastIndexOf('.') + 1).toLowerCase(); if (Extension == "gif" || Extension == "png" || Extension == "bmp" || Extension == "jpeg") { args.IsValid = true; // Valid file type FileUploadPath == ''; } else { args.IsValid = false; // Not valid file type } } } </script>
-
7.당신은 uploadfiles을 선택하는 입력 유형 = "파일"을 사용하십니까? 그렇다면, 왜이 속성을 받아 사용하지?
당신은 uploadfiles을 선택하는 입력 유형 = "파일"을 사용하십니까? 그렇다면, 왜이 속성을 받아 사용하지?
<input type="file" name="myImage" accept="image/x-png,image/gif,image/jpeg" />
-
8.당신이 입력 필드에 원격 URL을 테스트 할 필요가있는 경우, 당신은 당신이에 관심이있는 종류의 간단한 정규식 테스트를 시도 할 수 있습니다.
당신이 입력 필드에 원격 URL을 테스트 할 필요가있는 경우, 당신은 당신이에 관심이있는 종류의 간단한 정규식 테스트를 시도 할 수 있습니다.
$input_field = $('.js-input-field-class'); if ( !(/\.(gif|jpg|jpeg|tiff|png)$/i).test( $input_field.val() )) { $('.error-message').text('This URL is not a valid image type. Please use a url with the known image types gif, jpg, jpeg, tiff or png.'); return false; }
이 .gif 참고, .JPG, .JPEG, .TIFF 또는 .PNG 끝나는 아무것도 캡처
나는 트위터 같은 일부 인기있는 사이트가 이미지의 끝 크기 속성을 추가 있음을 알아 두셔야합니다. 유효한 이미지 유형 비록 예를 들어, 다음은이 시험을 실패합니다 :
https://pbs.twimg.com/media/BrTuXT5CUAAtkZM.jpg:large
그 때문에, 이것은 완벽한 해결책이 아니다. 그러나 길의 약 90 %에 당신을 얻을 것이다.
-
9.(나를 위해 작품)이 시도
(나를 위해 작품)이 시도
검증 함수 () { var 파일은 form.file.value =; VAR 등록 번호 = /(.*?)\.(jpg|bmp|jpeg|png)$/; 만약 (!의 file.match (REG)) { 경고 ( "잘못된 파일"); false를 반환; } }
-
10.요즘 Array.prototype.some 통해 다른 예 ().
요즘 Array.prototype.some 통해 다른 예 ().
함수 isImage (아이콘) { CONST EXT = '.JPG', '.JPEG', '.BMP', '.gif 참고', '.png를', '.svg']; ext.some (엘 => icon.endsWith (EL))를 호출; } CONSOLE.LOG (isImage ( 'questions_4234589.png')); CONSOLE.LOG (isImage ( 'questions_4234589.doc'));
-
11.여기에 더 재사용 방법은 jQuery를 사용하는 가정입니다
여기에 더 재사용 방법은 jQuery를 사용하는 가정입니다
도서관 기능 (jQuery를 필요로하지 않습니다)
function stringEndsWithValidExtension(stringToCheck, acceptableExtensionsArray, required) { if (required == false && stringToCheck.length == 0) { return true; } for (var i = 0; i < acceptableExtensionsArray.length; i++) { if (stringToCheck.toLowerCase().endsWith(acceptableExtensionsArray[i].toLowerCase())) { return true; } } return false; } String.prototype.startsWith = function (str) { return (this.match("^" + str) == str) } String.prototype.endsWith = function (str) { return (this.match(str + "$") == str) }
페이지 기능 (jQuery를 (거의) 필요) :
$("[id*='btnSaveForm']").click(function () { if (!stringEndsWithValidExtension($("[id*='fileUploader']").val(), [".png", ".jpeg", ".jpg", ".bmp"], false)) { alert("Photo only allows file types of PNG, JPG and BMP."); return false; } return true; });
-
12.[타이프]
[타이프]
uploadFileAcceptFormats: string[] = ['image/jpeg', 'image/gif', 'image/png', 'image/svg+xml']; // if you find the element type in the allowed types array, then read the file isAccepted = this.uploadFileAcceptFormats.find(val => { return val === uploadedFileType; });
-
13.당신은 입력 파일 형식에 사용할 수있는 동의 속성을 사용할 수 있습니다. 체크 아웃 MDN 문서
당신은 입력 파일 형식에 사용할 수있는 동의 속성을 사용할 수 있습니다. 체크 아웃 MDN 문서
-
14.이것은이 JQuery와에 수행하는 방법이다
이것은이 JQuery와에 수행하는 방법이다
$("#artifact_form").submit(function(){ return ["jpg", "jpeg", "bmp", "gif", "png"].includes(/[^.]+$/.exec($("#artifact_file_name").val())[0]) });
-
15.
<script type="text/javascript"> function file_upload() { var imgpath = document.getElementById("<%=FileUpload1.ClientID %>").value; if (imgpath == "") { alert("Upload your Photo..."); document.file.word.focus(); return false; } else { // code to get File Extension.. var arr1 = new Array; arr1 = imgpath.split("\\"); var len = arr1.length; var img1 = arr1[len - 1]; var filext = img1.substring(img1.lastIndexOf(".") + 1); // Checking Extension if (filext == "bmp" || filext == "gif" || filext == "png" || filext == "jpg" || filext == "jpeg" ) { alert("Successfully Uploaded...") return false; } else { alert("Upload Photo with Extension ' bmp , gif, png , jpg , jpeg '"); document.form.word.focus(); return false; } } } function Doc_upload() { var imgpath = document.getElementById("<%=FileUpload2.ClientID %>").value; if (imgpath == "") { alert("Upload Agreement..."); document.file.word.focus(); return false; } else { // code to get File Extension.. var arr1 = new Array; arr1 = imgpath.split("\\"); var len = arr1.length; var img1 = arr1[len - 1]; var filext = img1.substring(img1.lastIndexOf(".") + 1); // Checking Extension if (filext == "txt" || filext == "pdf" || filext == "doc") { alert("Successfully Uploaded...") return false; } else { alert("Upload File with Extension ' txt , pdf , doc '"); document.form.word.focus(); return false; } } } </script>
-
16.VAR의 _validFileExtensions = ".png를" ".gif 중요" ".JPG", ".JPEG", ".BMP"]; 함수 ValidateSingleInput (oInput) { (oInput.type == "파일") {경우 VAR sFileName = oInput.value; 경우 (sFileName.length> 0) { VAR blnValid 거짓 =; 대 (VAR의 J = 0; J <_validFileExtensions.length, J ++) { VAR sCurExtension = _validFileExtensions [J] (- sCurExtension.length, sCurExtension.length) .toLowerCase () == sCurExtension.toLowerCase () sFileName.substr (sFileName.length) {만약 blnValid 사실 =; 단절; } } 만약 (! blnValid) { 경고 ( "죄송합니다"+ sFileName + ", 허용 확장은 무효입니다 :"+ _validFileExtensions.join ( ",")); oInput.value = ""; false를 반환; } } } true를 반환; } 파일 1 :
파일 2 :
파일 3 :VAR의 _validFileExtensions = ".png를" ".gif 중요" ".JPG", ".JPEG", ".BMP"]; 함수 ValidateSingleInput (oInput) { (oInput.type == "파일") {경우 VAR sFileName = oInput.value; 경우 (sFileName.length> 0) { VAR blnValid 거짓 =; 대 (VAR의 J = 0; J <_validFileExtensions.length, J ++) { VAR sCurExtension = _validFileExtensions [J] (- sCurExtension.length, sCurExtension.length) .toLowerCase () == sCurExtension.toLowerCase () sFileName.substr (sFileName.length) {만약 blnValid 사실 =; 단절; } } 만약 (! blnValid) { 경고 ( "죄송합니다"+ sFileName + ", 허용 확장은 무효입니다 :"+ _validFileExtensions.join ( ",")); oInput.value = ""; false를 반환; } } } true를 반환; } 파일 1 :
파일 2 :
파일 3 : -
17.당신은 필요한 파일 형식을 포함하는 배열을 생성하고 배열에 파일 형식의 존재 여부를 확인하기 위해 jQuery를에 $ .inArray ()를 사용할 수 있습니다.
당신은 필요한 파일 형식을 포함하는 배열을 생성하고 배열에 파일 형식의 존재 여부를 확인하기 위해 jQuery를에 $ .inArray ()를 사용할 수 있습니다.
var imageType = ['jpeg', 'jpg', 'png', 'gif', 'bmp']; // Given that file is a file object and file.type is string // like "image/jpeg", "image/png", or "image/gif" and so on... if (-1 == $.inArray(file.type.split('/')[1], imageType)) { console.log('Not an image type'); }
-
18.당신은 찾아보기 버튼 파일 확장자를 유효성을 검사 할 때,이 코드를 사용 :
당신은 찾아보기 버튼 파일 확장자를 유효성을 검사 할 때,이 코드를 사용 :
function fileValidate(){ var docVal=document.forms[0].fileUploaded.value; var extension = docVal.substring(docVal.lastIndexOf(".")+1,docVal.length); if(extension.toLowerCase() != 'pdf') alert("Please enter file in .pdf extension "); return false; }
-
19.우리는에 제출 확인하실 수 있습니다 또는 우리는 그 제어의 변경 이벤트를 만들 수 있습니다
우리는에 제출 확인하실 수 있습니다 또는 우리는 그 제어의 변경 이벤트를 만들 수 있습니다
var fileInput = document.getElementById('file'); var filePath = fileInput.value; var allowedExtensions = /(\.jpeg|\.JPEG|\.gif|\.GIF|\.png|\.PNG)$/; if (filePath != "" && !allowedExtensions.exec(filePath)) { alert('Invalid file extention pleasse select another file'); fileInput.value = ''; return false; }
-
20.이렇게하여 다른 사람보다 훨씬 더 짧은 제 생각에 가장 좋은 솔루션입니다 :
이렇게하여 다른 사람보다 훨씬 더 짧은 제 생각에 가장 좋은 솔루션입니다 :
function OnSelect(e) { var acceptedFiles = [".jpg", ".jpeg", ".png", ".gif"]; var isAcceptedImageFormat = ($.inArray(e.files[0].extension, acceptedFiles)) != -1; if (!isAcceptedImageFormat) { $('#warningMessage').show(); } else { $('#warningMessage').hide(); } }
이 경우, 함수는이 설정을 가진 검도 업로드 컨트롤에서 호출됩니다
.Events (E => e.Select ( "onSelect를")).
from https://stackoverflow.com/questions/4234589/validation-of-file-extension-before-uploading-file by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게 페이지의 특정 요소로 이동합니다? [복제] (0) | 2020.10.13 |
---|---|
[JQUERY] AngularJS와 + JQuery와 어떻게 AngularJS와에서 작업 동적 콘텐츠를 얻을 수 있습니다 (0) | 2020.10.13 |
[JQUERY] 이벤트가 요소에 있는지 확인 [중복] (0) | 2020.10.13 |
[JQUERY] 어떻게 자바 스크립트에서 이미지를 캐시 않는다 (0) | 2020.10.13 |
[JQUERY] HTML 태그를 제거하지만 innerHTML을 유지 (0) | 2020.10.13 |