Javascript 如何使用选择多个文件?

Javascript 如何使用选择多个文件?,javascript,html,file-upload,Javascript,Html,File Upload,如何使用?新答案选择多个文件: 在HTML5中,您可以添加多个属性来选择多个文件 <input type="file" name="filefield" multiple="multiple"> 旧答案: 每个文件只能选择1个文件。如果你想 发送多个文件您必须使用多个输入标记或 闪光或银光 还有HTML5 桌面上的浏览器支持非常好,只是IE 9和更早版本不支持,移动设备上的浏览器支持不太好,我想这是因为根据平台和版本的不同,很难正确实现浏览器支持。这个jQuery插件不使用flas

如何使用?

新答案选择多个文件:

在HTML5中,您可以添加多个属性来选择多个文件

<input type="file" name="filefield" multiple="multiple">
旧答案:

每个文件只能选择1个文件。如果你想 发送多个文件您必须使用多个输入标记或 闪光或银光

还有HTML5

桌面上的浏览器支持非常好,只是IE 9和更早版本不支持,移动设备上的浏览器支持不太好,我想这是因为根据平台和版本的不同,很难正确实现浏览器支持。

这个jQuery插件不使用flash,它使用的形式是:

<input type='file' name='files[]' multiple />

整个事情应该是这样的:

<form enctype='multipart/form-data' method='POST' action='submitFormTo.php'> 
    <input type='file' name='files[]' multiple />
    <button type='submit'>Submit</button>
</form>

确保标记中有enctype='multipart/form data'属性,否则提交后无法读取服务器端的文件

你现在可以用HTML5来做了

实际上,您在文件输入上使用了multiple属性

<input type='file' multiple>

HTML5为类型属性为file的输入元素提供了新的属性multiple。 因此,您可以选择多个文件,IE9和以前的版本不支持这一点

注意:请小心输入元素的名称。 当您想要上传多个文件时,应该使用数组而不是字符串作为 名称属性

例如:输入类型=文件名=myPhotos[]多个=多个

如果您使用的是php,那么您将在$\u文件和 使用var_dump$_文件并查看输出和执行处理
现在,您可以迭代并执行其余操作

将其复制并粘贴到html中:

<form action="" method="post" enctype="multipart/form-data">
<input type="file" multiple name="img[]"/>
<input type="submit">
</form>
<?php
print_r($_FILES['img']['name']);
?>
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>

<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object

// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
  output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
              f.size, ' bytes, last modified: ',
              f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
              '</li>');
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}
这是通过我从这个网页传给你的:

这很容易

<input type='file' multiple>
$('#file').on('change',function(){
     _readFileDataUrl(this,function(err,files){
           if(err){return}
           console.log(files)//contains base64 encoded string array holding the 
           image data 
     });
});
var _readFileDataUrl=function(input,callback){
    var len=input.files.length,_files=[],res=[];
    var readFile=function(filePos){
        if(!filePos){
            callback(false,res);
        }else{
            var reader=new FileReader();
            reader.onload=function(e){              
                res.push(e.target.result);
                readFile(_files.shift());
            };
            reader.readAsDataURL(filePos);
        }
    };
    for(var x=0;x<len;x++){
        _files.push(input.files[x]);
    }
    readFile(_files.shift());
};

HTML5为类型属性为file的输入元素提供了新的属性multiple。因此,您可以选择多个文件,IE9和以前的版本不支持这一点

注意:请小心输入元素的名称。当您想要上传多个文件时,应该使用数组而不是字符串作为name属性的值

例:


如果您使用的是php,那么您将获得$_文件中的数据,并使用var_dump$_文件,然后查看输出并执行处理。现在您可以迭代并执行其余操作

这是关于javascript和htmlDo您的意思是一次选择一个文件,然后单击上载,一次上载多个文件吗?或者你的意思是使用ctrl+click在一个浏览器窗口中选择多个文件?你可以使用HTML5在输入元素上使用multiple属性。这里有一个伟大的提琴,利用它:Gmail使用Flash来做这件事,而不是因为HTML5。输入字段有一个多属性。@2009年10月20日,Costa大多数浏览器都不支持该功能,Niavlys在2年前就已经展示了html5解决方案。这个答案比恐龙更古老。这个multiple=multiple对用户不友好,avarage用户不理解,甚至不知道ctrl按钮的作用,并且它无法选择不同文件夹中的文件。IE9和更早版本不支持:考虑添加name=files[]type=file[]在任何标准中都找不到,应该导致兼容浏览器将其解释为type=text。只要多个就足够了。对这个东西的支持呢?Canisuse.com没有这个信息。我不确定,我查过同一个地方,哈哈。没有.name属性,因此示例中的标题始终未定义:IE9上也不支持,这一点已经得到了明确的回答。添加javascript示例有什么必要?因为它很好?除非您使用websocket或ajax提交它
<form action="" method="post" enctype="multipart/form-data">
<input type="file" multiple name="img[]"/>
<input type="submit">
</form>
<?php
print_r($_FILES['img']['name']);
?>