2016-11-03 2 views
1

У меня есть код ниже, и я не могу понять, почему мой запрос терпит неудачу. У кого-нибудь есть идея, почему?
Я пробовал много предлагаемых решений, которые я нашел в Интернете, но никто из них не работал.Загрузите несколько изображений с помощью PHP

HTML-код формы следует за кодом PHP

<?php include 'connection.php';?> 

<?php 
    $dir   = substr(uniqid(),-7); 
    $valid_formats = array("jpg", "png", "gif", "jpeg"); 
    $max_file_size = 1024*100; //100 kb 

    /* 
     $path = "Prototype/uploads/"; // Upload directory 
     mkdir ($path, 0744);\ 
    */ 

    $count = 0; 

    if (isset($_POST['search'])) { 
     // Loop $_FILES to exeicute all files 
     foreach ($_FILES['files']['name'] as $f => $name) { 
      echo "$name--"; 
      if ($_FILES['files']['error'][$f] == 4) { 
       continue; // Skip file if any error found 
       echo "something <br>"; 
      }   

      if ($_FILES['files']['error'][$f] == 0) {    
       if ($_FILES['files']['size'][$f] > $max_file_size) { 
        $message[] = "$name is too large!."; 
        echo "something***************** <br>"; 
        continue; // Skip large files 
       } elseif (! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)) { 
        $message[] = "$name is not a valid format"; 
        echo "something+++++++++++++++++++ <br>"; 
        echo "$name-- "; 
        continue; // Skip invalid file formats 
       } else { // No error found! Move uploaded files 
        // if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$name)) 
        // $count=$count+1; // Number of successfully uploaded file    
        //echo $path.$name; 

        $image = addslashes(file_get_contents($_FILES['files']['tmp_name'][$f])); 
        $image_name = addslashes($_FILES['files']['name'][$f]); 
        $query2 = "Insert into $dbname.Image (Image, ImageName) VALUES ('$image', '$image_name')"; 
        $result2 = mysqli_query($conn,$query2); 

        if (!$result2) { 
         echo "ERRORS"; 
        } 

        //Number of successfully uploaded file 

       } 
      } 
     } 
     echo "$count files were imported"; 
    } 

    //show success message 
    /* 
     echo "<h1>Uploaded:</h1>";  

     if(is_array($files)){ 
      echo "<ul>"; 
      foreach($files as $file){ 
       echo "<li>$file</li>"; 
      } 
      echo "</ul>"; 
     } 
    */ 
?> 

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data"> 
    <label class="btn btn-primary" for="my-file-selector"> 
    <input id="my-file-selector" type="file" name="files[]" style="display:none;" multiple onchange="$('#upload-file-info').html($(this).val());"> 
    Browse 
    </label> 
    <span class='label label-info' id="upload-file-info"></span> 
    <div style="float:right;"> 
    <label class="btn btn-primary" for="my-file-selector2"> 
     <input id="my-file-selector2" type="Submit" style="display:none;" name="search"> 
     Save 
    </label> 
    </div> 
</form> 
+1

какая ошибка вы сталкиваетесь? –

+0

Это условие 'if (! $ Result2)' терпит неудачу, поэтому я предполагаю, что что-то не так. – Bobby

+0

распечатайте массив $ _FILES и проверьте, что его возвращает –

ответ

0

Я предлагаю вам не сохранять изображения непосредственно в базу данных.

Скорее вы можете перемещать файлы в облачные сервисы, такие как S3, и сохранять этот URL-адрес в базе данных.

Если S3 не является вашим выбором, загрузите изображение в любую папку в том же проекте и сохраните этот URL-адрес.

Есть ли какая-либо конкретная причина для хранения двоичного изображения в базе данных?

0

Попробуйте это: -

<html lang="en"> 
<head> 
    <meta charset="UTF-8" /> 
    <title>Multiple File Ppload with PHP</title> 
</head> 
<body> 
    <form action="" method="post" enctype="multipart/form-data"> 
    <input type="file" id="file" name="files[]" multiple="multiple" accept="image/*" /> 
    <input type="submit" value="Upload!" /> 
</form> 
</body> 
</html> 

$valid_formats = array("jpg", "png", "gif", "zip", "bmp"); 
$max_file_size = 1024*100; //100 kb 
$path = "uploads/"; // Upload directory 
$count = 0; 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 
    // Loop $_FILES to exeicute all files 
    foreach ($_FILES['files']['name'] as $f => $name) {  
     if ($_FILES['files']['error'][$f] == 4) { 
      continue; // Skip file if any error found 
     }   
     if ($_FILES['files']['error'][$f] == 0) {    
      if ($_FILES['files']['size'][$f] > $max_file_size) { 
       $message[] = "$name is too large!."; 
       continue; // Skip large files 
      } 
      elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
       $message[] = "$name is not a valid format"; 
       continue; // Skip invalid file formats 
      } 
      else{ // No error found! Move uploaded files 
       if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$name)) 
       $count++; // Number of successfully uploaded file 
      } 
     } 
    } 
} 

ссылка: - Multiple Image Upload PHP form with one input

Смежные вопросы