【问题标题】:Upload more than one image to a server folder将多个图像上传到服务器文件夹
【发布时间】:2014-11-25 04:05:12
【问题描述】:

我有一个表单,用户可以通过该表单将图像上传到服务器文件夹,并且路径会保存在数据库中。

目前,当用户只需要输入一张图像时,我的代码可以正常工作;但是,我想对表单执行以下操作,以便用户可以上传多个图像:

<form class="form-horizontal" role="form" action="insertimage.php?id=<?php echo $_GET['id']; ?>" enctype="multipart/form-data" method="post">
    <div class="col-md-6">
        <div class="form-group">
            <label class="col-lg-4 control-label">Select Image 1</label>
                <div class="col-lg-6">
                    <input  type="file" name="file" id="fileToUpload">
                </div>
        </div>
    </div> 

    <div class="col-md-6">
        <div class="form-group">
            <label class="col-lg-4 control-label">Select Image 2</label>
                <div class="col-lg-6">
                    <input  type="file" name="file1" id="fileToUpload">
                </div>
        </div>
    </div> 

    <div class="col-md-6">
        <div class="form-group">
            <label class="col-lg-4 control-label">Select Image 3</label>
                <div class="col-lg-6">
                    <input  type="file" name="file2" id="fileToUpload">
                </div>
        </div>
    </div> 

    <div class="col-md-6">
        <div class="form-group">
            <label class="col-md-3 control-label"></label>
                <div class="col-md-8">
                    <input class="btn btn-primary" value="Save Changes" type="submit" name="submit">
                </div>  
        </div>
    </div> 
</form>

上传一张图片的后端PHP代码是insertimage.php:

<?php
$file_exts = array("jpg", "bmp", "jpeg", "gif", "png");
$upload_exts = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($upload_exts, $file_exts))
    {
        if ($_FILES["file"]["error"] > 0)
            {
                echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
            }
        else
            {
                echo "Upload: " . $_FILES["file"]["name"] . "<br>";
                echo "Type: " . $_FILES["file"]["type"] . "<br>";
                echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
                echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
                // Enter your path to upload file here
                if (file_exists("uploads/" .$_FILES["file"]["name"]))
                    {
                        echo "<div class='error'>"."(".$_FILES["file"]["name"].")"." already exists. "."</div>";
                    }
                else
                    {
                        move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/" . $_FILES["file"]["name"]);
                        echo "<div class='sucess'>"."Stored in: " . "uploads/" . $_FILES["file"]["name"]."</div>";
    `               }
            }
    }
else
    {
        echo "<div class='error'>Invalid file</div>";
    }
?>

谁能告诉我如何在上述代码的帮助下支持上传 3 张图片?

【问题讨论】:

    标签: php


    【解决方案1】:

    有了这个,您可以使用 ctrl 选择多个图像

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

    在服务器端使用循环

     for ($1=0;i<count($dataFile);$i++){
        //your upload code ; 
        $_FILES["file"]["name"][$i];//go for each and every i position for all 
     }
    

    【讨论】:

    • 我希望用户只能上传 5 张图片,那么这也可以使用此代码吗?
    • 是的,此代码针对所选图像的总数运行,如果修复为 5 个图像,您必须在 php 代码端将计数更改为 5
    【解决方案2】:

    您可以一次将文件数组用于多个图像,在 html 行中具有多个属性,例如:

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

    这将为您提供可以调试的文件数组

    print_r($_FILES);
    

    而且您还必须更改保存数据的代码,因为一次只能有一个文件的错误尝试使用循环我的调试

    $_FILES
    

    【讨论】:

    • 我希望单独上传图片,避免使用多个关键字
    • 如果你想避免使用多个关键字,那么你必须多次添加文件标签来上传图片,并且你必须传递相同的文件名,这样它才能创建一个数组,它会解决你的问题问题
    • 对于最多 5 个文件,您将不得不在视图级别验证输入以仅获取 5 个文件。
    猜你喜欢
    • 2010-12-28
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多