2014-09-02 28 views
2

我試圖一次上傳多個圖像到我的數據庫。我能夠用單個文件做到這一點,但我無法使用html5多選項進行操作。從單個文件輸入上傳多個圖像到數據庫

這是我的形式:

<form action="includes/saveImage.php" method="POST" enctype="multipart/form-data"> 
    File: 
    <input type="file" multiple="multiple" name="image[]" accept="image/*"> <input type="submit" value="upload"> 
</form> 

,這是我saveImage.php

$files = array(); 
$fdata = $_FILES["image"]; 
if (is_array($fdata["name"])) 
     for ($i = 0; $i < count($fdata['name']); ++$i) { 
       $files[] = array(
        'name' => $fdata['name'][$i], 
        'tmp_name' => $fdata['tmp_name'][$i], 
        'image' => file_get_contents($fdata['tmp_name'][$i]), 
       ); 
     } 
} else { 
$files[] = $fdata; 
} 

foreach ($files as $file) 
{ 
    if (!$album_mysqli->query("INSERT INTO '1' VALUES ('','{$file['name']}','{$file['image']}',NOW())")) 
     { 
      print"error while uploading"; 
     } 
    // print_r($file); 
} 

如果我去掉最後的print_r($文件);它顯示圖像文件的二進制數據。 任何想法,爲什麼它不會上傳到我的數據庫?

我想要寫入的數據庫對圖像使用BLOB字段。

解決我的問題

有一些問題與SQL語句 以這種方式添加的圖片作​​品就好...

foreach ($files as $file) 
    { 
     $image = file_get_contents($file['tmp_name']); 
     $result = $album_mysqli->prepare("INSERT INTO '1' VALUES ('', ?, ?, CURDATE())"); 
     $result->bind_param("ss", $file['name'], $image); 
     if (!$result->execute()) 
     { 
      echo"Problem on file {$file['name']}. <br/>"; 
     } 
     else 
     { 
      echo("{$file['name']} was added to the database. <br/>"); 
     } 

     $result->close(); 
    } 

回答

0

解決我的問題

有一些問題與SQL語句 以這種方式添加的圖片作​​品就好...

$files = array(); 
$fdata = $_FILES["image"]; 
if (is_array($fdata["name"])) 
    for ($i = 0; $i < count($fdata['name']); ++$i) { 
      $files[] = array(
       'name' => $fdata['name'][$i], 
       'tmp_name' => $fdata['tmp_name'][$i], 
       'image' => file_get_contents($fdata['tmp_name'][$i]), 
      ); 
    } 
} else { 
$files[] = $fdata; 
} 

    foreach ($files as $file) 
    { 
     $image = file_get_contents($file['tmp_name']); 
     $result = $album_mysqli->prepare("INSERT INTO '1' VALUES ('', ?, ?, CURDATE())"); 
     $result->bind_param("ss", $file['name'], $image); 
     if (!$result->execute()) 
     { 
      echo"Problem on file {$file['name']}. <br/>"; 
     } 
     else 
     { 
      echo("{$file['name']} was added to the database. <br/>"); 
     } 

     $result->close(); 
    } 
2

你不能上傳圖片到你的數據庫像這個。您應該通過PHP將圖像上傳到某個目錄並將它們的文件名插入到數據庫中,以便您可以在之後獲取它們,或者您可以將它們的base64代碼上傳到數據庫並將其放入圖像標籤中,如下所示<img src="base64_code_of_the_image" />

0
foreach ($files as $file) 
{ 
    @move_uploaded_file($file['tmp_name'],<destinationfile>); 
    if (!$album_mysqli->query("INSERT INTO '1' VALUES  
     ('','{$file['name']}','',NOW())")) 
    { 
      print"error while uploading"; 
     } 
print_r($file); 

}

不能將圖像直接與您試圖上傳到數據庫中。如果你想這樣做,你需要爲數據庫表中的特定字段創建BLOB對象。

+0

我使用的BLOB字段我數據庫表。通過單個文件輸入,我能夠以這種方式將圖像寫入數據庫,並且能夠檢索它。 – Lucas 2014-09-03 06:49:28

相關問題