使用PHP上传多个图像

时间:2014-08-18 18:22:43

标签: php php-5.3

我正在尝试上传多张图片。您可以在下面看到我的代码。

图片上传按摩忏悔(确切地选择要上传的图像数量。)

如何在成功提交时只显示“图片上传”按摩?

如果我把信息放在循环之后,无论是否有任何错误,它都会开始显示。

这是我的PHP代码:

 <?php
error_reporting(0);
session_start();
include('db.php');

$id = $mysqli->escape_string($_GET['id']);

define ("MAX_SIZE","9000"); 
function getExtension($str)
{
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
}


$valid_formats = array("jpg", "png", "gif", "jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
{

    $uploaddir = "gallery/"; //a directory inside
    foreach ($_FILES['photos']['name'] as $name => $value)
    {

        $filename = stripslashes($_FILES['photos']['name'][$name]);
        $size=filesize($_FILES['photos']['tmp_name'][$name]);
        //get the extension of the file in a lower case format
          $ext = getExtension($filename);
          $ext = strtolower($ext);

         if(in_array($ext,$valid_formats))
         {
           if ($size < (MAX_SIZE*1024))
           {
           $image_name=time().$filename;

           $newname=$uploaddir.$image_name;

           if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], $newname)) 
           {

           $mysqli->query("INSERT INTO galleries(image) VALUES('$image_name')");

           echo "Image uploaded";

           }
           else
           {
            echo '<span class="imgList">You have exceeded the size limit! so moving unsuccessful! </span>';
            }

           }
           else
           {
            echo '<span class="imgList">You have exceeded the size limit!</span>';

           }

          }
          else
         { 
            echo '<span class="imgList">Unknown extension!</span>';

         }

     }
}

?>

任何帮助都将被挪用。

1 个答案:

答案 0 :(得分:2)

您可以实现一个计数器,当上传成功完成后,您可以递增该计数器变量,然后在foreach循环完成后将其与数组项的总数进行比较。我修改了你的代码(没有检查它但应该工作)。

 <?php
error_reporting(0);
session_start();
include('db.php');

$id = $mysqli->escape_string($_GET['id']);

define ("MAX_SIZE","9000"); 
function getExtension($str)
{
     $i = strrpos($str,".");
     if (!$i) { return ""; }
     $l = strlen($str) - $i;
     $ext = substr($str,$i+1,$l);
     return $ext;
}


$valid_formats = array("jpg", "png", "gif", "jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
{

$uploaddir = "gallery/"; //a directory inside

$successfulUploads = 0;

foreach ($_FILES['photos']['name'] as $name => $value)
{

    $filename = stripslashes($_FILES['photos']['name'][$name]);
    $size=filesize($_FILES['photos']['tmp_name'][$name]);
    //get the extension of the file in a lower case format
    $ext = getExtension($filename);
    $ext = strtolower($ext);

    if(in_array($ext,$valid_formats)) {
        if ($size < (MAX_SIZE*1024)) {

            $image_name=time().$filename;
            $newname=$uploaddir.$image_name;

            if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], $newname)) {

                $mysqli->query("INSERT INTO galleries(image) VALUES('$image_name')");

                //echo "Image uploaded";

                $successfulUploads = $successfulUploads + 1;

            } else {

                echo '<span class="imgList">Moving unsuccessful! </span>';

            }

        } else {

            echo '<span class="imgList">You have exceeded the size limit!</span>';

        }

    } else { 

        echo '<span class="imgList">Unknown extension!</span>';

    }

 }


 if($successfulUploads === count($_FILES['photos'])){

    echo 'UPLOAD SUCCESS!';

 } else {

    echo 'NOT ALL IMAGES WERE UPLOADED SUCCESSFULLY';

 }

}

*如果你想要使用它更复杂,你可以创建另一个数组变量而不是计数器,如果上传失败,你可以将文件名添加到数组中,然后检查数组的长度。做比较。如果计数&gt; 0然后你会知道有一个错误,你可以回显无法上传的文件名