간단한 JavaScript를 사용하여 파일의 업로드 크기를 얻으려면 어떻게해야합니까?
-
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 분 업로드 시간을 기다릴 필요가 없으므로 너무 커서 전에 추가 점검을해야합니다. 사용 가능성을 위해 페이지를 제출합니다.