从文件输入获取文件名或文本倍数=多个

Jas*_*son 1 html jquery file-upload

我正在尝试设置我的输入:文件.以下SO问题让我在95%的路上.不同之处在于我使用的是HTML5 multiple = multiple属性.

如何用CSS3/Javascript设置"输入文件"的样式?

JS

        $('#choose-files-button').click(function () {
            $(':file').trigger('click');
        });

        $(':file').change(function () {
            $this = $(this);
            $('#files-selected').text($this.val());
        })
Run Code Online (Sandbox Code Playgroud)

HTML

    @using (Html.BeginForm("Upload", "Manage", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <span id="choose-files-button" class="btn btn-info">Choose Files</span>
        <span id="files-selected"></span>
        <button class="pull-right btn btn-primary" type="submit">Upload</button>
        <div style="height:0; width:0;overflow:hidden;">
            <input type="file" name="files" id="files" multiple="multiple" value="Add Images" />
        </div>
    }
Run Code Online (Sandbox Code Playgroud)

问题

问题是当选择文件的文本设置时,它只在Chrome中显示一个文件名.我还没有测试过其他浏览器.它将它设置为类似C:/Fakepath/asfd.jpg.当你使用<input type="file" name="files" multiple="multiple" />它时,它会显示选择的3个文件,这是我试图模仿的行为.

有没有办法获得该文本,或获取所选文件的数量?

Sha*_*oli 7

使用this.files.length这里thisfileDOM元素.

$(':file').change(function () {
    $('#files-selected').text(this.files.length + " file selected");
});
Run Code Online (Sandbox Code Playgroud)

演示