【问题标题】:Can I use jquery to read array of filenames from input type=file with the multiple attribute?我可以使用 jquery 从具有多个属性的输入 type=file 中读取文件名数组吗?
【发布时间】:2017-07-30 18:46:35
【问题描述】:

使用 jquery 我可以从

获取输入的文件名(我只想要名称,而不是数据)
<form enctype="multipart/form-data">
    <input type="file" id="id_myfile">
</form>

只是使用

$('#id_myfile').val();

但是如果我想使用multiple属性怎么办:

<form enctype="multipart/form-data">
    <input type="file" id="id_myfile" multiple="multiple">
</form>

现在我得到一个包含多个文件名的逗号分隔列表。有没有办法使用数组作为输入名称

<form enctype="multipart/form-data">
    <input type="file" name="name_myfile[]" multiple="multiple">
</form>

并将各个文件名放入一个数组中,这样读取:

$('input[name="name_myfile[]"]').eq(0).val())
$('input[name="name_myfile[]"]').eq(1).val())

等等?此方法不起作用并导致未定义的错误。

我在这里读到这种方法(输入中的数组名称,而不是 jquery 部分)适用于提交的表单,使用 php 及其内置命名数组($_FILES 等)给出了几个示例。我们使用的是经典的 ASP,但这无关紧要,因为我在这里说的是客户端。文件名可以以某种方式放入数组中,就像我在这里建议用 JavaScript 读取的那样吗?或者,是否有一种完全不同/更好的方式从用户那里获取文件名列表(我的意思是,让用户浏览,当然不让他们输入名称)?

【问题讨论】:

    标签: jquery file input


    【解决方案1】:

    这可以在没有 JQuery 的情况下完成,请查看 link

    var x = document.getElementById("name_myfile");
    
    var files = x.files; //contains all files selected
    
    var name = files[0].name; //contains the name of the first file
    

    files 数组还包含每个文件的大小(以字节为单位)。要获取文件名而不是完整路径,请检查此one

    从 Link 复制并修改以适合示例的代码:

    if (name) {
        var startIndex = (name.indexOf('\\') >= 0 ? name.lastIndexOf('\\') : name.lastIndexOf('/'));
        var filename = name.substring(startIndex);
        if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
            filename = filename.substring(1);
        }
        alert(filename);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2015-12-21
      • 2012-03-16
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      相关资源
      最近更新 更多