간단한 JavaScript를 사용하여 파일의 업로드 크기를 얻으려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1606842

  •  05-07-2019
  •  | 
  •  

문제

페이지 중 하나에 파일 기능을 업로드했습니다. JavaScript를 사용하여 파일의 확장을 확인합니다. 이제 사용자가 파일을 1MB보다 크게 업로드하는 것을 제한하고 싶습니다. JavaScript를 사용하여 파일 업로드 크기를 확인할 수있는 방법이 있습니까?

내 코드는 현재 다음과 같습니다.

<script language="JavaScript">
function validate() {
   var filename = document.getElementById("txtChooseFile").value;
   var ext = getExt(filename);
   if(ext == "txt" || ext == "csv")
      return true;
   alert("Please upload Text files only.");
   return false;
}

function getExt(filename) {
   var dot_pos = filename.lastIndexOf(".");
   if(dot_pos == -1)
      return "";
   return filename.substr(dot_pos+1).toLowerCase();
}
</script>
도움이 되었습니까?

해결책

파일 이름을 어수선하는 다른 사람은 크기를 포함하여 JavaScript의 파일에 대한 다른 세부 사항을 찾을 수있는 방법이 없습니다.

대신 서버 측 스크립트를 구성하여 대형 업로드를 차단해야합니다.

다른 팁

보다 http://www.w3.org/tr/fileapi/. Firefox 3.6에 의해 지원됩니다. 다른 브라우저에 대해 모르겠습니다.

onchange a의 이벤트 <input id="fileInput" type="file" /> 간단히:

var fi = document.getElementById('fileInput');
alert(fi.files[0].size); // maybe fileSize, I forget

파일의 내용을 문자열 등으로 반환 할 수도 있습니다. 그러나 이것은 다시 Firefox 3.6에서만 작동 할 수 있습니다.

이제 순수한 JavaScript를 사용하여 파일 크기를 얻을 수 있습니다. 거의 모든 브라우저를 지원하면 Filereader가 파일 크기를 읽는 데 사용할 수 있으며 파일을 서버에 업로드하지 않고도 이미지를 표시 할 수 있습니다. 링크

암호:

    var oFile = document.getElementById("file-input").files[0]; // input box with type file;
    var img = document.getElementById("imgtag");
    var reader = new FileReader();
    reader.onload = function (e) {
            console.log(e.total); // file size 
            img.src =  e.target.result; // putting file in dom without server upload.

   };
   reader.readAsDataURL(oFile );

다음 코드를 사용하여 파일 객체에서 파일 크기를 직접 얻을 수 있습니다.

 var fileSize = oFile.size;

이러한 답변의 대부분은 날로반입니다. 현재 파일 API를 지원하는 모든 브라우저에서 파일 크기 클라이언트 측을 결정할 수 있습니다. 여기에는 IE9 이상 이외의 모든 브라우저가 포함됩니다.

많은 브라우저 별 코드를 사용하여 가능할 수 있습니다. 소스를 살펴보십시오 Tiddlywiki, Windows Scripting Host (IE), XPCOM (Mozilla) 등에 연결하여 사용자의 하드 드라이브에 자체적으로 저장할 수 있습니다.

웹 페이지에서 평범한 JS로 그렇게하는 방법이 없다고 생각합니다.
브라우저 확장이있을 수 있지만 페이지에서 JavaScript는 보안상의 이유로 파일 시스템에 액세스 할 수 없습니다.

Flash와 Java는 비슷한 제한을 가져야하지만 아마도 조금 덜 엄격합니다.

불가능합니다. 클라이언트 측 스크립트를 실행하여 최종 사용자 하드 드라이브에서 파일 정보를 읽을 수있는 주요 보안 문제입니다.

여기를 봐:

http://www.kavoir.com/2009/01/check-for-file-size-with-javaScript-before-uploading.html

이것이 서버 측면이어야한다고 말하는 모든 사람들에 관해서는, 그것들은 절대적으로 그 자리에 있습니다.

제 경우에는 내가 제외한 최대 크기는 128MB이지만, 사용자가 130MB 인 것을 업로드하려고하면 5 분 업로드 시간을 기다릴 필요가 없으므로 너무 커서 전에 추가 점검을해야합니다. 사용 가능성을 위해 페이지를 제출합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top