jQuery가 업로드 시 파일 형식을 제한하도록 하는 방법은 무엇입니까?
jQuery에서 파일 업로드 필드를 jpg/jpeg, png, gif로만 제한하고 싶습니다.저는 백엔드 체크를 하고 있습니다.PHP
이미.나는 내 제출 버튼을 실행하고 있습니다.JavaScript
이미 기능을 하고 있기 때문에 제출하거나 경고하기 전에 파일 형식을 확인하는 방법만 알면 됩니다.
파일 필드의 값은 다른 필드와 동일하게 얻을 수 있습니다.그러나 변경할 수는 없습니다.
따라서 파일의 확장명이 올바른지 여부를 표면적으로 확인하려면 다음과 같은 작업을 수행할 수 있습니다.
var ext = $('#my_file_field').val().split('.').pop().toLowerCase();
if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
alert('invalid extension!');
}
이 작업에만 플러그인이 필요 없습니다.다른 대본 몇 개를 가지고 이 내용을 구체적으로 정리했습니다.
$('INPUT[type="file"]').change(function () {
var ext = this.value.match(/\.(.+)$/)[1];
switch (ext) {
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
$('#uploadButton').attr('disabled', false);
break;
default:
alert('This is not an allowed file type.');
this.value = '';
}
});
유효한 파일 형식을 선택하지 않으면 업로드 버튼을 비활성화로 설정할 수 있습니다.
jQuery: http://docs.jquery.com/Plugins/Validation 에 대한 유효성 검사 플러그인을 사용할 수 있습니다.
필요한 작업을 정확히 수행하는 수락 규칙이 있습니다. http://docs.jquery.com/Plugins/Validation/Methods/accept#extension
파일 확장명을 제어하는 것은 파일의 mimype과 전혀 관련이 없으므로 bulletproof가 아닙니다.따라서 단어 문서인 .png와 완벽하게 유효한 png 이미지인 .doc을 가질 수 있습니다.그러니 서버 쪽으로 제어를 더 많이 하는 것도 잊지 마세요 ;)
파일 필드를 사용하는 경우 프론트엔드에서 '수락' 속성을 입력하는 것이 매우 편리합니다.
예:
<input id="file" type="file" name="file" size="30"
accept="image/jpg,image/png,image/jpeg,image/gif"
/>
몇 가지 중요한 참고 사항:
- 수락 속성은 Internet Explorer 10, Firefox, Opera, Chrome 및 Safari 6에서 지원됩니다.
- 파일 브라우저 대화상자에 다른 브라우저와 다르게 파일 확장명 텍스트가 표시됩니다.
사용자가 거짓말을 하고 있는 범위보다 MIME에서 확인하고 싶지 않습니까?그렇다면 한 줄 미만입니다.
<input type="file" id="userfile" accept="image/*|video/*" required />
제 경우에는 다음 코드를 사용했습니다.
if (!(/\.(gif|jpg|jpeg|tiff|png)$/i).test(fileName)) {
alert('You must select an image file only');
}
저는 워킹 코드 예시를 작성하려고 노력하고 테스트를 해보고 모든 것이 작동합니다.
Hare는 코드:
HTML:
<input type="file" class="attachment_input" name="file" onchange="checkFileSize(this, @Model.MaxSize.ToString(),@Html.Raw(Json.Encode(Model.FileExtensionsList)))" />
자바스크립트:
//function for check attachment size and extention match
function checkFileSize(element, maxSize, extentionsArray) {
var val = $(element).val(); //get file value
var ext = val.substring(val.lastIndexOf('.') + 1).toLowerCase(); // get file extention
if ($.inArray(ext, extentionsArray) == -1) {
alert('false extension!');
}
var fileSize = ($(element)[0].files[0].size / 1024 / 1024); //size in MB
if (fileSize > maxSize) {
alert("Large file");// if Maxsize from Model > real file size alert this
}
}
여러 개의 (html 5) 파일 업로드를 다루고 계신다면, 제가 추천하는 상단 댓글을 받아서 조금 수정하였습니다:
var files = $('#file1')[0].files;
var len = $('#file1').get(0).files.length;
for (var i = 0; i < len; i++) {
f = files[i];
var ext = f.name.split('.').pop().toLowerCase();
if ($.inArray(ext, ['gif', 'png', 'jpg', 'jpeg']) == -1) {
alert('invalid extension!');
}
}
이 코드는 정상적으로 작동하지만 유일한 문제는 파일 형식이 지정된 옵션이 아닌 경우 경고 메시지를 표시하지만 파일 이름을 무시해야 한다는 것입니다.
$('#ff2').change(
function () {
var fileExtension = ['jpeg', 'jpg', 'pdf'];
if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
alert("Only '.jpeg','.jpg','.pdf' formats are allowed.");
return false; }
});
이 예에서는 PNG 이미지만 업로드할 수 있습니다.
HTML
<input type="file" class="form-control" id="FileUpload1" accept="image/png" />
JS
$('#FileUpload1').change(
function () {
var fileExtension = ['png'];
if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
alert("Only '.png' format is allowed.");
this.value = ''; // Clean field
return false;
}
});
<form enctype="multipart/form-data">
<input name="file" type="file" />
<input type="submit" value="Upload" />
</form>
<script>
$('input[type=file]').change(function(){
var file = this.files[0];
name = file.name;
size = file.size;
type = file.type;
//your validation
});
</script>
$("input[name='btnsubmit']").attr('disabled', true);
$('input[name="filphoto"]').change(function () {
var ext = this.value.match(/\.(.+)$/)[1];
switch (ext)
{
case 'jpg':
case 'jpeg':
case 'png':
case 'bmp':
$("input[name='btnsubmit']").attr('disabled', false);
break;
default:
alert('This is not an allowed file type.');
$("input[name='btnsubmit']").attr('disabled', true);
this.value = '';
function validateFileExtensions(){
var validFileExtensions = ["jpg", "jpeg", "gif", "png"];
var fileErrors = new Array();
$( "input:file").each(function(){
var file = $(this).value;
var ext = file.split('.').pop();
if( $.inArray( ext, validFileExtensions ) == -1) {
fileErrors.push(file);
}
});
if( fileErrors.length > 0 ){
var errorContainer = $("#validation-errors");
for(var i=0; i < fileErrors.length; i++){
errorContainer.append('<label for="title" class="error">* File:'+ file +' do not have a valid format!</label>');
}
return false;
}
return true;
}
여기 자바스크립트 검증을 위한 간단한 코드가 있으며, 검증 후 입력된 파일을 정리합니다.
<input type="file" id="image" accept="image/*" onChange="validate(this.value)"/>
function validate(file) {
var ext = file.split(".");
ext = ext[ext.length-1].toLowerCase();
var arrayExtensions = ["jpg" , "jpeg", "png", "bmp", "gif"];
if (arrayExtensions.lastIndexOf(ext) == -1) {
alert("Wrong extension type.");
$("#image").val("");
}
}
언급URL : https://stackoverflow.com/questions/651700/how-to-have-jquery-restrict-file-types-on-upload
'programing' 카테고리의 다른 글
$(문서)를 여러 개 가질 수 있습니까?준비 완료(함수 {...}); 섹션? (0) | 2023.09.08 |
---|---|
파워셸이 배치 파일을 실행한 다음 열려 있도록 하려면 어떻게 해야 합니까? (0) | 2023.09.08 |
iframe 로드 완료 이벤트 캡처 (0) | 2023.09.08 |
Oracle SQL Developer에서 BLOB(JSON 포함)를 편집하려면 어떻게 해야 합니까? (0) | 2023.09.08 |
전체 포스트백 없이 AJAX 업데이트 패널에서 파일 업로드 (0) | 2023.09.08 |