在javascript中获取文件大小

sca*_*man 24 javascript

给定一个文件的路径,如:
C:\ file.jpg
如何在javascript中获取文件的大小?

And*_*y E 39

如果它不是由具有完全访问权限的JavaScript驱动的本地应用程序,则无法从路径名称获取任何文件的大小.出于安全原因,运行javascript的网页无权访问本地文件系统.

如果要显示进度条,可以使用优雅的降级文件上传器,如SWFUpload.HTML5也有File API,但目前还没有广泛支持.如果用户选择input[type=file]元素的文件,您可以从files集合中获取有关该文件的详细信息:

alert(myInp.files[0].size);
Run Code Online (Sandbox Code Playgroud)


Vee*_*eer 11

function findSize() {
    var fileInput =  document.getElementById("fUpload");
    try{
        alert(fileInput.files[0].size); // Size returned in bytes.
    }catch(e){
        var objFSO = new ActiveXObject("Scripting.FileSystemObject");
        var e = objFSO.getFile( fileInput.value);
        var fileSize = e.size;
        alert(fileSize);    
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你能加一个解释吗? (4认同)

Muk*_*l P 5

您可以尝试此方法来获取以 kB 和 MB 为单位的文件大小,直到以字节为单位的文件大小达到 7 位数字为止,结果将以 kbs 为单位。7 似乎是这里的神奇数字。之后,如果字节有 7 到 10 位数字,我们必须将其除以 10**3(n),其中 n 是附加操作。每添加 3 位数字就会重复此模式。

let fileSize = myInp.files[0].size.toString();

if(fileSize.length < 7) return `${Math.round(+fileSize/1024).toFixed(2)}kb`
    return `${(Math.round(+fileSize/1024)/1000).toFixed(2)}MB`
Run Code Online (Sandbox Code Playgroud)