php使用数组或for循环上传多个文件

时间:2013-09-09 09:15:22

标签: php

下面有一个通过php进行单个文件输入上传的工作示例,现在我想通过遍历每个输入类型=“文件”上传多个文件。

我已经读过在IE10下面不支持输入标签上的multiple属性所以我认为最好的方法是有几个输入类型=文件以便循环它们

感谢任何帮助

<input type="file" name="FilesUpload1" class="filesUpload" />
<input type="file" name="FilesUpload2" class="filesUpload" />
<input type="file" name="FilesUpload3" class="filesUpload" />

<?php
//Сheck that we have a file
if((!empty($_FILES["FilesUpload1"])) && ($_FILES['FilesUpload1']['error'] == 0)) {

    //Check if the file is JPEG image and it's size is less than 350Kb
    $filename = basename($_FILES['FilesUpload1']['name']);
    $ext = substr($filename, strrpos($filename, '.') + 1);

    //check file extension
    if ((($ext == "gif") 
    || ($ext == "jpeg")
    || ($ext == "jpg")
    || ($ext == "png")
    || ($ext == "doc")
    || ($ext == "docx")
    || ($ext == "rtf")
    || ($ext == "txt")          
    || ($ext == "pdf"))

    //check file mime
    && (($_FILES["FilesUpload1"]["type"] == "image/gif")
    || ($_FILES["FilesUpload1"]["type"] == "image/jpeg")
    || ($_FILES["FilesUpload1"]["type"] == "image/jpg")
    || ($_FILES["FilesUpload1"]["type"] == "image/pjpeg")
    || ($_FILES["FilesUpload1"]["type"] == "image/x-png")
    || ($_FILES["FilesUpload1"]["type"] == "image/png")
    || ($_FILES["FilesUpload1"]["type"] == "application/msword")
    || ($_FILES["FilesUpload1"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
    || ($_FILES["FilesUpload1"]["type"] == "application/rtf")
    || ($_FILES["FilesUpload1"]["type"] == "text/plain")
    || ($_FILES["FilesUpload1"]["type"] == "application/pdf"))


    //check file size is less than 1048576 bytes [1 MB]
    && (($_FILES["FilesUpload1"]["size"] < 1048576))) {

        //Determine the path to which we want to save this file
        $newname = dirname(__FILE__).'/../entries/'.$_POST["CompanyName"].'-'.$filename;    

        //Check if the file with the same name is already exists on the server
        if (!file_exists($newname)) {

            //Attempt to move the uploaded file to it's new place
            if ((move_uploaded_file($_FILES['FilesUpload1']['tmp_name'],$newname))) {
                echo "It's done! Your file has been saved.";

            } else {
                echo "Error: A problem occurred during file upload!";
            }

        } else {
            echo "Error: File ".$_FILES["FilesUpload1"]["name"]." already exists";
        }

    } 

    else {
        echo "Error: Only .gif, .jpeg, .jpg, .png, .doc, .docx, .rtf, .txt, .pdf files under 1 MB are accepted for upload.";
    }

} else {
    echo "Error: No file uploaded";
}

?>

2 个答案:

答案 0 :(得分:1)

你试过这个逻辑吗?

<强> HTML

<form method="POST" action="desired_url" enctype="multipart/form-data">

        <input type="file" name="FilesUpload[]" class="filesUpload" />
        <input type="file" name="FilesUpload[]" class="filesUpload" />
        <input type="file" name="FilesUpload[]" class="filesUpload" />

        <button type="submit" name="upload_file" class="btn btn-primary">Upload</button>
</form>

<强> PHP

if( isset($_POST["upload_file"] ) ){

    $get_files = $_FILES["FilesUpload"];

    foreach( $get_files['name'] as $key => $name ){

        $files = $_FILES['FilesUpload'];

        if( $files['error'][$key] == 0 ){

            $ext          = substr($name, strrpos($name, '.') + 1);
            $filename     = rand(11111,99999).'.'.$ext;
            $destination = "uploads/".$filename;

            if( move_uploaded_file( $files['tmp_name'][$key], $destination ) ){
                echo "Your file has been uploaded.<br>";
            }
        }

    }   

}

答案 1 :(得分:1)

试试这种方式。

HTML:

<p>Hello World</p>
<div class="buttonFileDownload_container">
  <a href="#" class="buttonFileDownload"><u>Numbers</u><br/>
      Numbers description</a>
</div>
<div class="buttonFileDownload_container">
  <a href="#" class="buttonFileDownload"><u>Colours</u><br/>
      Colours description</a>
</div>
<div class="buttonFileDownload_container">
  <a href="#" class="buttonFileDownload"><u>Onomatopoeia</u><br/>
      Onomatopoeia description</a>
</div>
<div class="buttonFileDownload_container">
  <a href="#" class="buttonFileDownload"><u>Alphabet</u><br/>
      Alphabet description</a>
</div>

PHP代码:

<input name="upload[]" type="file" multiple="multiple" />