如何上传多个文件并移入php中的文件夹?

时间:2018-08-24 08:26:18

标签: php

代码:

<?php
    if(isset($_POST['submit']))
    {
        if(isset($_FILES['img_url']['name']))
        {
            for($i=0; $i<count($_FILES['img_url']['name']); $i++) 
            {
                $tmpFilePath = $_FILES['img_url']['tmp_name'][$i];    
                if ($tmpFilePath != "")
                {    
                    $path = "../images/hotel_images/";   
                    $name = $_FILES['img_url']['name'][$i];
                    $size = $_FILES['img_url']['size'][$i];
                    list($txt, $ext) = explode(".", $name);
                    $file= time().substr(str_replace(" ", "_", $txt), 0);
                    $info = pathinfo($file);
                    $filename = $file.".".$ext;
                    $filepath_upload = $path.$filename;
                    $imageFileType = strtolower(pathinfo($filename,PATHINFO_EXTENSION));
                    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) 
                    {
                        $j2 = $i+1;
                        $msg = "<div class='alert alert-success'>Sorry, ".$j2." Image files Extension .".$ext." are not Uploaded & Other files Uploaded Successfully <br/>.</div>" ;
                    }
                    else if(move_uploaded_file($_FILES['img_url']['tmp_name'][$i], $filepath_upload)) 
                    {
                        $banner_image_source_file = $filepath_upload;
                        $banner_image_save_file = $filepath_upload;
                        list($width_orig, $height_orig) = getimagesize($banner_image_source_file);
                        $img_url_name.=$filename."|";
                    }
                }
                $filepath = rtrim($img_url_name, '|');  
            }
            if(!empty($filepath))
            {
                $query = mysqli_query($con, "INSERT INTO `hotel`(`img_url`, `status`) VALUES ('".$filepath."')");
                if($query)
                {
                    $msg .= "<div class='alert alert-success'>Hotel Record Added Successfully</div>";
                }
                else
                {
                    $msg = "<div class='alert alert-success'>Unbale to Add Hotel Record Please Try Again !!!</div>";
                }
            } 
            else
            {
                $msg = "<div class='alert alert-success'>Unable to Add Please Try Again !! </div>";
            } 
        }
        else
        {
            $msg = "<div class='alert alert-success'>Unable to Add Please Try Again !! </div>";
        } 
    }
?>

<form action="" method="POST" enctype="multipart/form-data" id="add-hotel-form">
    <div class="form-group col-md-12">
        <label for="hotel">Upload Hotel Images</label>
        <input type="file" class="form-control-file" id="upload_hotel_img1" name="img_url[]" multiple>
    </div>

    <div class="form-group col-md-12">
        <label for="room">Upload Room Images</label>
        <input type="file" class="form-control-file" id="upload_room_img1" name="img_url2[]" multiple>
    </div>
    <input type="submit" class="btn btn-primary" name="submit" value="Submit">
</form>

在下面的代码中,我创建了一个简单的表单,其中有两个input field type='file',我只能上传第一个<label for="hotel">Upload Hotel Images</label>并成功移入该文件夹,但我也想上传并移动第二个输入字段,即<label for="room">Upload Room Images</label>。我对此一无所知。那么,我该怎么做?请帮助我。

谢谢

2 个答案:

答案 0 :(得分:0)

您的“房间图像”输入称为img_url2,您永远不会在代码中与之交互。

为获得最佳实践,请将大部分PHP代码移至文件上传功能中,然后使用img_url $ _FILE输入调用一次,然后使用img_url2调用一次。

示例:

<?php

error_reporting(E_ALL);
ini_set("display_errors", true);
ini_set("display_startup_errors", true);

function uploadFile($file, $path)
{
    $img_url_name = "";

    if(is_array($file) && isset($file['name']) && isset($file['tmp_name']) && isset($file['size']))
    {
        $tmpFilePath = isset($file['tmp_name'][0]) ? $file['tmp_name'][0] : "";
        $name = isset($file['name'][0]) ? $file['name'][0] : "";

        list($txt, $ext) = explode(".", $name);
        $file = time().substr(str_replace(" ", "_", $txt), 0);
        $filename = $file.".".$ext;
        $filepath_upload = $path.$filename;
        $imageFileType = strtolower(pathinfo($filename,PATHINFO_EXTENSION));

        if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" )
        {
            return "<div class='alert alert-success'>Sorry, ".$name." Image files Extension .".$ext." are not Uploaded & Other files Uploaded Successfully <br/>.</div>" ;
        }
        else if(move_uploaded_file($tmpFilePath, $filepath_upload))
        {
            $img_url_name .= $filename."|";
        }

        $filepath = rtrim($img_url_name, '|');

        if(!empty($filepath))
        {
            if(!isset($con))
            {
                global $con;
            }

            $query = mysqli_query($con, "INSERT INTO `hotel`(`img_url`, `room_url`) VALUES ('".$filename."','".$filepath."')");
            if($query)
            {
                return "<div class='alert alert-success'>Hotel Record Added Successfully</div>";
            }
        }
    }

    return "<div class='alert alert-success'>Unable to Add Please Try Again !! </div>";
}

if(isset($_POST['submit']))
{
    if(isset($_FILES['img_url']['name']))
    {
        echo uploadFile($_FILES['img_url'], "../images/hotel_images/");
    }
    if(isset($_FILES['img_url2']['name']))
    {
        echo uploadFile($_FILES['img_url2'], "../images/room_img/");
    }
}
?>

<form action="" method="POST" enctype="multipart/form-data" id="add-hotel-form">
    <div class="form-group col-md-12">
        <label for="hotel">Upload Hotel Images</label>
        <input type="file" class="form-control-file" id="upload_hotel_img1" name="img_url" multiple>
    </div>

    <div class="form-group col-md-12">
        <label for="room">Upload Room Images</label>
        <input type="file" class="form-control-file" id="upload_room_img1" name="img_url2" multiple>
    </div>
    <input type="submit" class="btn btn-primary" name="submit" value="Submit">
</form>

答案 1 :(得分:0)

我使用FormData()从多个字段上传多个图像。请查看以下代码:

<head>
    <title>Example</title>
</head>

<body>
    <form enctype="multipart/form-data" id="add-hotel-form">
        <div class="form-group col-md-12">
            <label for="hotel">Upload Hotel Images</label>
            <input type="file" class="form-control-file" id="upload_hotel_img1" name="img_url" multiple>
        </div>

        <div class="form-group col-md-12">
            <label for="room">Upload Room Images</label>
            <input type="file" class="form-control-file" id="upload_room_img2" name="img_url2" multiple>
        </div>
        <input type="button" class="btn btn-primary" name="submit" value="Submit" onclick="myfunction();">
    </form>
</body>

<script>
function myfunction(){

    var form_data = new FormData();

    var image = document.getElementById('upload_hotel_img1').files.length;
    var images = document.getElementById('upload_room_img2').files.length;

    for (var x = 0; x < image; x++) {
        form_data.append("image", document.getElementById('upload_hotel_img1').files[x]);
    }

    for (var x = 0; x < images; x++) {
        form_data.append("images[]", document.getElementById('upload_room_img2').files[x]);
    }
}
</script>

我们可以分别使用以下$_FILES["image"]['name']$_FILES["images"]['name']在后​​端检索这些图像。