2014-09-02 64 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

相关问题