HTML을 사용하여 업로드 할 수있는 파일 유형을 어떻게 제한합니까?
사용자 경험을 쉽게하기 위해 파일 업로드를 이미지 (jpeg, gif, png)로 제한하고 싶습니다.
<form method="post" action="..." enctype="multipart/form-data">
<label for="image">Photo</label>
<input name="image" type="file" />
</form>
HTML을 사용하여 업로드 할 수있는 파일 유형을 어떻게 제한합니까?
사용자 경험을 쉽게하기 위해 파일 업로드를 이미지 (jpeg, gif, png)로 제한하고 싶습니다.
<form method="post" action="..." enctype="multipart/form-data">
<label for="image">Photo</label>
<input name="image" type="file" />
</form>
답변:
HTML5 파일 입력에는 accept 속성과 여러 속성이 있습니다. 여러 속성을 사용하여 인스턴스에 여러 이미지를 업로드 할 수 있습니다.
<input type="file" multiple accept='image/*'>
여러 MIME 유형을 제한 할 수도 있습니다.
<input type="file" multiple accept='image/*|audio/*|video/*' >
파일 객체를 사용하여 MIME 유형을 확인하는 또 다른 방법입니다.
파일 개체는 이름, 크기 및 유형을 제공합니다.
var files=e.target.files;
var mimeType=files[0].type; // You can get the mime type
위의 코드로 업로드 할 일부 파일 형식에 대해 사용자를 제한 할 수도 있습니다.
image/*|audio/*|video/*
나를 위해 작동하지 않습니다, 그것은 쉼표로 구분되어야합니다 :image/*,video/mp4,.txt
편집
일이 있어야만한다면 "Accept"속성을 통해이 작업을 수행 할 수 있습니다.
http://www.webmasterworld.com/forum21/6310.htm
그러나 브라우저는 이것을 거의 무시하므로 관계가 없습니다. 짧은 대답은 HTML로 할 수있는 방법이 없다고 생각합니다. 대신 서버 측에서 확인해야합니다.
다음 이전 게시물에는 대안에 도움이 될 수있는 몇 가지 정보가 있습니다.
다음은 이미지 업로드 용 HTML입니다. 기본적으로 accept="image/*"
. 그러나 드롭 다운에서 변경할 수 있으며 모든 파일이 표시됩니다. 따라서 Javascript 부분은 선택한 파일이 실제 이미지인지 여부를 확인합니다.
<div class="col-sm-8 img-upload-section">
<input name="image3" type="file" accept="image/*" id="menu_images"/>
<img id="menu_image" class="preview_img" />
<input type="submit" value="Submit" />
</div>
여기 변경 이벤트에서 먼저 이미지의 크기를 확인합니다. 그리고 두 번째if
조건에서는 이미지 파일인지 여부를 확인합니다.
this.files[0].type.indexOf("image")
것 -1
이 이미지 파일이 아닌 경우.
document.getElementById("menu_images").onchange = function () {
var reader = new FileReader();
if(this.files[0].size>528385){
alert("Image Size should not be greater than 500Kb");
$("#menu_image").attr("src","blank");
$("#menu_image").hide();
$('#menu_images').wrap('<form>').closest('form').get(0).reset();
$('#menu_images').unwrap();
return false;
}
if(this.files[0].type.indexOf("image")==-1){
alert("Invalid Type");
$("#menu_image").attr("src","blank");
$("#menu_image").hide();
$('#menu_images').wrap('<form>').closest('form').get(0).reset();
$('#menu_images').unwrap();
return false;
}
reader.onload = function (e) {
// get loaded data and render thumbnail.
document.getElementById("menu_image").src = e.target.result;
$("#menu_image").show();
};
// read the image file as a data URL.
reader.readAsDataURL(this.files[0]);
};
<script>
function chng()
{
var typ=document.getElementById("fiile").value;
var res = typ.match(".jp");
if(res)
{
alert("sucess");
}
else
{
alert("Sorry only jpeg images are accepted");
document.getElementById("fiile").value="; //clear the uploaded file
}
}
</script>
이제 html 부분에서
<input type="file" onchange="chng()">
이 코드는 업로드 된 파일이 jpg 파일인지 확인하고 다른 유형의 업로드를 제한합니다.
Uploadify라는 프로젝트를 확인하십시오. http://www.uploadify.com/
Flash + jQuery 기반 파일 업 로더입니다. 이것은 파일 유형을 필터링하고 동시에 여러 파일을 선택하는 등의 기능을 제공하는 Flash의 파일 선택 대화 상자를 사용합니다.