2017-03-07 24 views
1

这一切都始于我得到一个不明身份的索引错误:图像。然后我把检查之前,所以我不会再看到错误。但是我知道这些图像没有被上传。我用合法的图片来测试,没有任何工作。我一直在这方面挣扎了好几个小时。请帮忙。图像未被上传到MySQL

<html> 
    <body> 
     <form action="images-add.php" method="post" enctyp="multipart/form-data"> 
     <input type="file" name="image" /> 

     <input type="submit" name="sum" value="upload" /> 
     </form> 
    </body> 
</html> 
<?php 
include('connection.php'); 

if(isset($_POST['image'])) { 

if(empty($_FILES) || !isset($_FILES['image'])){ 
echo "Please Add an Image"; 
}else{ 
if(getimagesize($_FILES['image']['tmp_name']) == FALSE){ 
      $image= addslashes($_FILES(['image']['tmp_name']));  
      $name= addslashes($_FILES(['image']['name'])); 
      $image= file_get_contents($image); 
      $image= base64_encode($image); 
      saveimage($name, $image); 
    } 
    } 
} 

function saveimage($name, $image){ 
     $con= mysql_connect("localhost", "root", ""); 
     mysql_select_db("hw2", $con); 
     $qry= "insert into images (name, image) values ('$name', '$image')"; 
     $result= mysql_query($qry,$con); 
    if($result) { 
    echo "<br/> Image Uploaded."; 
    }else{ 
     echo "Not Uploaded";  
    } 
    } 
?> 
+0

正如我读,可能是在mysql中的字段图像的定义 –

+2

不要'保存数据库中的文件。 http://stackoverflow.com/a/41235395/267540专门base64编码 – e4c5

+0

正确的enctyp'enctype'并使用mysqli而不是mysql。 – Rose

回答

0

请你的HTML表单改变enctypenctype。 还要更新代码 从

$image= addslashes($_FILES(['image']['tmp_name'])); 

$image= addslashes($_FILES['image']['tmp_name']); 

而且 这行代码,从

$name= addslashes($_FILES(['image']['name'])); 

$name= addslashes($_FILES['image']['name']); 

下面给出了完整的代码...

<html> 
    <body> 
     <form action="" method="POST" enctype="multipart/form-data"> 
     <input type="file" name="image" /> 

     <input type="submit" name="sum" value="upload" /> 
     </form> 
    </body> 
</html> 
<?php 
include('connection.php'); 

if($_POST){ 
    if(empty($_FILES) || !isset($_FILES['image'])){ 
     echo "Please Add an Image"; 
    }else{ 
     if(getimagesize($_FILES['image']['tmp_name'])){ 

       $image= addslashes($_FILES['image']['tmp_name']);  
       $name= addslashes($_FILES['image']['name']); 
       $image= file_get_contents($image); 
       $image= base64_encode($image); 
       saveimage($name, $image); 
     } 
    } 
} 

function saveimage($name, $image){ 
    $con= mysql_connect("localhost", "root", ""); 
    mysql_select_db("hw2", $con); 
    $qry= "insert into images (name, image) values ('$name', '$image')"; 
    $result= mysql_query($qry,$con); 

    if($result) { 
     echo "<br/> Image Uploaded."; 
    }else{ 
     echo "Not Uploaded";  
    } 
} 
?> 

我希望这段代码适合你。

+0

我决定将数据库中的路径和图像保存在一个文件夹中。它没有工作我基于这个建议重写了代码,但没有奏效。 – Rico

+0

在你的数据库表名“images”什么是列“image”的数据类型? – Shujaat

+0

在您的数据库中,名为“images”的表必须具有名为“image”的列的“Blob”数据类型,之后,您将能够将图像保存在其中。 如果你没有数据类型为blob,那么你可以存储图像的路径,但不是图像本身。 – Shujaat