给出如下文件的路径:
C:\ file.jpg
如何在javascript中获取文件的大小?
答案 0 :(得分:35)
如果它不是由具有完全访问权限的JavaScript驱动的本地应用程序,则无法仅从路径名称获取任何文件的大小。出于安全原因,运行javascript的网页无权访问本地文件系统。
如果要显示进度条,可以使用优雅降级文件上传器,如SWFUpload。 HTML5也有File API,但目前还没有广泛支持。如果用户选择input[type=file]
元素的文件,您可以从files
集合中获取有关该文件的详细信息:
alert(myInp.files[0].size);
答案 1 :(得分: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);
}
}
答案 2 :(得分:3)
如果您可以使用javascript访问用户的文件系统,请查看可能发生的错误。
但是,您可以使用文件系统对象,但这仅适用于IE:
http://bytes.com/topic/javascript/answers/460516-check-file-size-javascript
答案 3 :(得分:1)
你不能。
出于安全原因,JavaScript无法访问本地计算机上的文件,甚至无法检查其大小。
您唯一能做的就是使用JavaScript将带有file
字段的表单提交到服务器端脚本,然后可以测量其大小并将其返回。
答案 4 :(得分:1)
试试这个。
function showFileSize() {
let file = document.getElementById("file").files[0];
if(file) {
alert(file.size + " in bytes");
} else {
alert("select a file... duh");
}
}
<input type="file" id="file"/>
<button onclick="showFileSize()">show file size</button>
答案 5 :(得分:0)
使用网络浏览器以标准方式无法使用javascript获取本地文件的文件大小。
但是如果可以从远程路径访问该文件,您可以使用Javascript发送HEAD请求,并根据Web服务器读取Content-length标头
答案 6 :(得分:0)
你不能因为Javascript中没有文件输入/输出。有关发布的类似问题,请参阅here。
答案 7 :(得分:0)
为了获取网页上的页面文件大小,我构建了一个javascript书签来完成这项工作。它以kb为单位提醒大小。如果要复制文件大小,请将警报更改为提示。
这是警报的书签代码。
<a href="javascript:a=document.getElementsByTagName('HTML')[0].outerHTML;b=a.length/1024;c=Math.round(b);alert(c+' kb');">Doc Size</a>
这是提示的小书签代码。
<a href="javascript:a=document.getElementsByTagName('HTML')[0].outerHTML;b=a.length/1024;c=Math.round(b);prompt('Page Size',c+' kb');">Doc Size</a>
中查看此操作
答案 8 :(得分:0)
您可能会尝试此操作以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`