【发布时间】:2011-05-05 23:35:40
【问题描述】:
我正在尝试赶上 HTML5 浪潮,但遇到了一个小问题。在 HTML5 之前,我们使用 Flash 检查文件大小,但现在的趋势是避免在 Web 应用程序中使用 Flash。有没有办法使用 HTML5 在客户端检查文件大小?
【问题讨论】:
标签: javascript html file-upload
我正在尝试赶上 HTML5 浪潮,但遇到了一个小问题。在 HTML5 之前,我们使用 Flash 检查文件大小,但现在的趋势是避免在 Web 应用程序中使用 Flash。有没有办法使用 HTML5 在客户端检查文件大小?
【问题讨论】:
标签: javascript html file-upload
这行得通。将其放置在事件侦听器中,以在输入更改时进行。
if (typeof FileReader !== "undefined") {
var size = document.getElementById('myfile').files[0].size;
// check file size
}
【讨论】:
接受的答案实际上是正确的,但您需要将其绑定到事件侦听器,以便在文件输入更改时它会更新。
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 转换为显示哪个指标取决于您。
【讨论】:
.files 一起使用:jsfiddle.net/edxvo4wa(我自己在想出一个解决方案时发现了这一点——如果您将其更改为 document.getElementById,它就可以工作)。
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 给出名称和类型。
【讨论】:
就个人而言,我会选择这种格式:
$('#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
}
}
【讨论】:
“没有简单的跨浏览器解决方案来实现这一点”:Detecting file upload size on the client side?
【讨论】: