클라이언트 HTML5를 사용하여 파일 크기를 확인하고 있습니까?


84

HTML5 물결을 타려고하는데 작은 문제가 있습니다. HTML5 이전에는 플래시로 파일 크기를 확인했지만 이제는 웹 앱에서 플래시를 사용하지 않는 것이 추세입니다. HTML5를 사용하여 클라이언트 측에서 파일 크기를 확인하는 방법이 있습니까?

답변:


126

작동합니다. 입력이 변경 될 때 이벤트 리스너 내부에 배치합니다.

if (typeof FileReader !== "undefined") {
    var size = document.getElementById('myfile').files[0].size;
    // check file size
}

IE 10, Mozilla FFx 및 Chrome에서 작동합니다. 감사!
Rahnzo 2014

잘 작동하지만 올바르게 사용하고 있지 않습니다. 입력의 onchange 이벤트에 로그온하면 괜찮을 것입니다.
dandavis

@dandavis 나는 대답에 코드를 사용하고 있습니다. 코드가 제대로 작동한다면 왜 변경해야합니까?
Chuck Le Butt

1
@Chuck 예제는 파일을 선택하기 전에 페이지로드시 파일 목록을 읽으려고하기 때문에 작동하지 않습니다.
approxiblue

1
@ 척 : 좋아, 잘 작동하고 붙여 넣었어도 괜찮 았지만 그것만으로는 충분하지 않다. 파일을 채운 후 콘솔에서 실행하면 제대로 작동하는 것을 볼 수 있습니다. 앱의 경우 콘솔이 좋지 않으므로 입력이 채워진 후 실행되는 이벤트에 코드를 넣어야 예상대로 작동합니다. 오해해서 죄송합니다.
dandavis

33

수락 된 답변은 실제로 정확하지만 파일 입력이 변경 될 때마다 업데이트되도록 이벤트 리스너에 바인딩해야합니다.

document.getElementById('fileInput').onchange = function(){
    var filesize = document.getElementById('fileInput').files[0].size;
    console.log(filesize);    
}

jQuery 라이브러리를 사용하는 경우 다음 코드가 유용 할 수 있습니다.

$('#fileInput').on('change',function(){
  if($(this).get(0).files.length > 0){ // only if a file is selected
    var fileSize = $(this).get(0).files[0].size;
    console.log(fileSize);
  }
});

어떤 메트릭이 당신에게 달려 있는지 표시 할 fileSize의 변환을 감안할 때.


귀하의 jQuery 예제가 작동하지 않습니다. jsfiddle.net/edxvo4wa 와 함께 jQuery를 사용할 수없는 것 .files같습니다. (솔루션을 만들 때 직접 발견했습니다 .으로 변경하면 작동합니다 ). document.getElementById
Chuck Le Butt

1
@Chuck 죄송이 오류에 대한, 내가 작업 한 내 대답을 업데이트 한
Ammadu

7

HTML5 fie api는 파일 ​​크기 확인을 지원합니다.

이 기사를 읽고 파일 API에 대한 자세한 정보를 얻으십시오.

http://www.html5rocks.com/en/tutorials/file/dndfiles/

<input type="file" id="fileInput" />


var size = document.getElementById("fileInput").files[0].size;

마찬가지로 파일 API는 이름과 유형을 제공합니다.


3

개인적으로이 형식을 선택합니다.

    $('#inputFile').bind('change', function(e) {
      var data = e.originalEvent.target.files[0];
      // and then ...
      console.log(data.size + "is my file's size");
      // or something more useful ...
      if(data.size < 500000) {
        // what your < 500kb file will do
      }
    }

1
나는 500kb가 실제로 500 * 1024라고 생각합니다. 큰 문제는 아니지만 500,000b 파일을 가진 최종 사용자는 그것을 488kb로보고 거절 할 것입니다. 그리고 여기에 큰 좌절이 시작됩니다
Apolo

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.