添加文件大小和单独的文件输入

时间:2014-10-10 03:02:15

标签: javascript jquery file-io fileapi

尝试将至少两个文件输入大小一起添加。可能有两个以上但总是至少一个,如果超过15MB则停止表格。现在让我获取文件大小,并将它们附加到div进行检查,但附加只是将每个大小添加到最后。尝试了html,只是替换了node元素。有谁看到我做错了什么?

FIDDLE

<div id="fileAmt"></div>
<input type="file" name="images[]" id="i1" class="imageup" />
<input type="file" name="images[]" id="i2" class="imageup" />

$('input[type="file"]').each(function(i) {
// Get an array of the files for this input
$(this).change(function () {
    var files = $(this).get(0).files;
    // Loop through files
    for (var j = 0; file = files[j]; j++) {
        // File size, in bytes
        var size = file.size;
        $('#fileAmt').html(size);
    }
});
});

2 个答案:

答案 0 :(得分:1)

我为你做了updated fiddle

这里发生的事情是,每次添加文件时我都会将文件大小计数重置为0,然后我将其完成并将其加总并保存到全局变量totalSize。您缺少的部分是您每次在循环中为变量赋值,但是您从未对事物进行过总结。你说“嘿,现在价值是100.嘿,现在价值是200”。你没有将100和200加在一起。

这有意义吗?

//my global variable that I will add to, not replace.
window.totalSize = 0;

$('input[type="file"]').each(function(i) {
    // Get an array of the files for this input
    $(this).change(function () {
        window.totalSize = 0;
        var files = $(this).get(0).files;
        // Loop through files
        for (var j = 0; file = files[j]; j++) {
            // File size, in bytes
            window.totalSize += file.size;   //Here is a key bit
            $('#fileAmt').html(window.totalSize);
        }
    });
});

答案 1 :(得分:0)

您需要将大小放在循环之外并将其附加到其中。

$(this).change(function () {
    var files = $(this).get(0).files;
    var size = 0;
    // Loop through files
    for (var j = 0; file = files[j]; j++) {
        // File size, in bytes
        size += file.size;
    }
    $('#fileAmt').html(size);
});