【问题标题】:How to get the size <input type = "file">? [duplicate]如何获得大小 <input type = "file">? [复制]
【发布时间】:2017-11-28 10:39:21
【问题描述】:

当我单击“添加附件”按钮时,我编写了创建标签的代码。

而且,我有以下代码。

        <input type="file" name="fileup['+idx+']" id="fileup['+idx+']">

        <input class="btn btn-default btn-sm" type="button" value="fileSizeCheck" onclick="fileSizeCheck('+idx+')" />


            function fileSizeCheck(idx)
            {
                var getName = $('input[id="fileup['+idx+']"]').val();
                var extension = getName.split(".").pop().toLowerCase();

                var i = getName.files[idx].size;
                alert(i);
            }

但是,此代码会产生错误。

错误代码是:Uncaught TypeError: Cannot read property '1' of undefined

getName 包含所选文件的文件名。

扩展名获取所选文件的扩展名。

我有一个问题。

获取文件名成功,但不知道如何获取文件大小。

如何使用我的代码获取所选文件的大小值?

作为一个脚本初学者,我知道的不多。您的 cmets 很有价值。请告诉我你的意见。

【问题讨论】:

  • 好吧,您正试图通过 ID 查找 input,但您的输入标签没有 ID。
  • 我已经编辑了这篇文章。请确认。 @Utkanos
  • 您将 1 传递给 idx ,不清楚 idx 中的内容应该使用 this.files[0].sizeelement.files[0].size
  • 您的代码甚至不包括&lt;input type="file"&gt;...
  • 我已经编辑了这篇文章。请确认@NiettheDarkAbsol

标签: javascript jquery


【解决方案1】:

纯js方式

document.getElementById("myFile").onchange = findSize;

function findSize(){
    var inputTag = document.getElementById("myFile");
    if ('files' in inputTag) {         
      for (var i = 0; i < inputTag.files.length; i++) {        
        var file = inputTag.files[i];        
        console.log(file.size + " bytes");
    }     
}
}
&lt;input type="file" id="myFile"&gt;

【讨论】:

  • 我在您的帮助下解决了这个问题。你能给我一个代码审查吗?
  • 对于“文件”类型的每个输入元素,都有一组可用的标准对象;其中之一是我使用过的“文件”;从这个对象可以得到文件的大小。其他对象的详细信息,请验证此链接w3schools.com/jsref/dom_obj_fileupload.asp
【解决方案2】:

你在寻找这样的东西吗?

$('#uploadFile').bind('change', function() {
  alert(this.files[0].size);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="uploadFile" />

【讨论】:

  • 是的。但有点不同。
  • 不一样?
  • 点击时需要传递idx值,如何根据你写的方式覆盖idx值?
  • 我有多个 s。因此,我在files[]中选择的值不是files[0],我选择的值应该包含在files[]中。我不知道。
【解决方案3】:

我以为你想要这样

function fileSizeCheck(idx){
   var getName = $('#fileup'+idx)[0].files;   
   alert("file size is "+getName[0].size);
}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table>
<tr>
<td><input type="file" name="fileup1" id="fileup1">
<input class="btn btn-default btn-sm" type="button" value="fileSizeCheck" onclick="fileSizeCheck(1)" /></td>
</tr>
<tr>
<td><input type="file" name="fileup2" id="fileup2">
<input class="btn btn-default btn-sm" type="button" value="fileSizeCheck" onclick="fileSizeCheck(2)" /></td>
</tr>
</table>             

【讨论】:

  • 我会试试的。请稍等
  • 我有多个 s。因此,我在files[]中选择的值不是files[0],我选择的值应该包含在files[]中。不知道怎么实现。
  • 我已经更新了我的答案@Seongwon-Choi
  • 文件[0]是什么意思?
  • .files 是一个数组,其中在 [0] 中提到了 0th 索引
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2011-05-30
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
相关资源
最近更新 更多