使用1个输入类型文件元素选择多个文件(来自不同目录的不同文件)。

时间:2013-07-16 17:20:49

标签: html html5

我知道我们可以添加多个属性,但这只允许我在浏览器的同一目录中一次选择多个文件。

我想知道是否可以选择不同目录中的多个文件用于相同的输入文件类型元素仅使用html。提前感谢。

2 个答案:

答案 0 :(得分:1)

不能只使用HTML,绝对不能仅使用一个输入类型=“文件”。

以下是HTML表单的外观,但注意仅此一项是不够的。

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype='multipart/form-data'>
Select files: <br/>
<input type='file' name='files0[]' id="files0" multiple><br/><br/><br/>
<span style="font-size: 10pt;">Click "+" for more files
<i id="more_files" class="general foundicon-plus" style="color: blue;cursor: pointer;"></i></span>
<br/><br/><br/>
<input type="submit" name="submit" value="Submit">

使用jQuery / Javascript,你可以在“+”中添加一个onclick事件,为表单生成一个新的输入type =“file”:

<script type="text/javascript">
$(document).ready(function() {
    $(document).on('click','#more_files', function() {
        var numOfInputs = 1;
        while($('#files'+numOfInputs).length) { numOfInputs++; }//once this loop breaks, numOfInputs is greater than the # of browse buttons

        $("<input type='file' multiple/>")
            .attr("id", "files"+numOfInputs)
            .attr("name", "files"+numOfInputs+"[]")
            .insertAfter("#files"+(numOfInputs-1));

        $("<br/>").insertBefore("#files"+numOfInputs);
    });
});
</script>

最后,使用PHP,您可以使用以下熟悉的格式包装数据:

<?php
if(isset($_POST['submit']) && !empty($_FILES)) {
    $files = array();
    $files = $_FILES['files0'];
    //var_dump($files);//this array will match the structure of $_FILES['browser']
    //Iterate through each browser button
    $browserIterator = 1;
    while(isset($_FILES['files'.$browserIterator])) {
        //Files have same attribute structure, so grab each attribute and append data for each attribute from each file
        foreach($_FILES['files'.$browserIterator] as $attr => $values) {//get each attribute
            foreach($_FILES['files'.$browserIterator][$attr] as $fileValue)     {//get each value from attribute
                $files[$attr][] = $fileValue;//append value
            }
        }
        $browserIterator++;
    }
    //Use $files like you would use $_FILES['browser'] -- It is as though all files came from one browser button!
    $fileIterator = 0;
    while($fileIterator < count($files['name'])) {
        echo $files['name'][$fileIterator]."<br/>";
        $fileIterator++;
    }
}
?>

答案 1 :(得分:0)

您可以使用多个<input type="file" />元素作为表单。在单个上传对话框中无法从不同目录中选择多个文件。