2014-11-05 16 views
5

Come posso archiviare e visualizzare le immagini in un database MySQL. Fino ad ora ho scritto solo il codice per ottenere le immagini da parte dell'utente e memorizzarli in una cartella, il codice che ho scritto fino ad ora è: file HTMLCome memorizzare le immagini nel database mysql utilizzando php

<input type="file" name="imageUpload" id="imageUpload"> 

PHP FILE

$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES["imageUpload"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 


if (move_uploaded_file($_FILES["imageUpload"]["tmp_name"], $target_file)) { 
    echo "The file ". basename($_FILES["imageUpload"]["name"]). " has been uploaded."; 
} else { 
    echo "Sorry, there was an error uploading your file.";} 
+0

http://stackoverflow.com/questions/16382672/how-insert-and-retrieve-images-to-and-from-database-using-php –

+4

Non è consigliabile archiviare l'immagine nel database, ciò che stai facendo attualmente è un approccio migliore. Tutto quello che devi fare è memorizzare il percorso dell'immagine nel database –

+0

Grazie per il tuo aiuto, ho capito. Ora sto solo memorizzando il nome del file caricato nel mio database e recuperando quel nome per aprire l'immagine dove lo voglio io. –

risposta

4

Ho trovato la risposta, Per quelli che cercano la stessa cosa ecco come l'ho fatto. Non dovresti considerare di caricare immagini nel database, ma puoi memorizzare il nome del file caricato nel tuo database e poi recuperare il nome del file e usarlo dove vuoi che venga visualizzata l'immagine.

CODICE HTML

<input type="file" name="imageUpload" id="imageUpload"> 

PHP CODICE

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

    //Process the image that is uploaded by the user 

    $target_dir = "uploads/"; 
    $target_file = $target_dir . basename($_FILES["imageUpload"]["name"]); 
    $uploadOk = 1; 
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 

    if (move_uploaded_file($_FILES["imageUpload"]["tmp_name"], $target_file)) { 
     echo "The file ". basename($_FILES["imageUpload"]["name"]). " has been uploaded."; 
    } else { 
     echo "Sorry, there was an error uploading your file."; 
    } 

    $image=basename($_FILES["imageUpload"]["name"],".jpg"); // used to store the filename in a variable 

    //storind the data in your database 
    $query= "INSERT INTO items VALUES ('$id','$title','$description','$price','$value','$contact','$image')"; 
    mysql_query($query); 

    require('heading.php'); 
    echo "Your add has been submited, you will be redirected to your account page in 3 seconds...."; 
    header("Refresh:3; url=account.php", true, 303); 
} 

CODICE per visualizzare l'immagine

while($row = mysql_fetch_row($result)) { 
    echo "<tr>"; 
    echo "<td><img src='uploads/$row[6].jpg' height='150px' width='300px'></td>"; 
    echo "</tr>\n"; 
} 
+1

Un utente può avere validi motivi per caricare immagini su un database e può essere performativo. Non è molto popolare, e quindi non è altrettanto "supportato" (vale a dire una base di conoscenza meno estesa) – Strawberry

+5

ATTENZIONE: il codice di esempio sopra riportato è completamente aperto per le vulnerabilità di SQL injection. – Clinton

-1
<!-- 
//THIS PROGRAM WILL UPLOAD IMAGE AND WILL RETRIVE FROM DATABASE. UNSING BLOB 
(IF YOU HAVE ANY QUERY CONTACT:[email protected]) 


CREATE TABLE `images` (
    `id` int(100) NOT NULL AUTO_INCREMENT, 
    `name` varchar(100) NOT NULL, 
    `image` longblob NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB ; 

--> 
<!-- this form is user to store images--> 
<form action="index.php" method="post" enctype="multipart/form-data"> 
Enter the Image Name:<input type="text" name="image_name" id="" /><br /> 

<input name="image" id="image" accept="image/JPEG" type="file"><br /><br /> 
<input type="submit" value="submit" name="submit" /> 
</form> 
<br /><br /> 
<!-- this form is user to display all the images--> 
<form action="index.php" method="post" enctype="multipart/form-data"> 
Retrive all the images: 
<input type="submit" value="submit" name="retrive" /> 
</form> 



<?php 
//THIS IS INDEX.PHP PAGE 
//connect to database.db name is images 
     mysql_connect("", "", "") OR DIE (mysql_error()); 
     mysql_select_db ("") OR DIE ("Unable to select db".mysql_error()); 
//to retrive send the page to another page 
if(isset($_POST['retrive'])) 
{ 
    header("location:search.php"); 

} 

//to upload 
if(isset($_POST['submit'])) 
{ 
if(isset($_FILES['image'])) { 
     $name=$_POST['image_name']; 
     $email=$_POST['mail']; 
     $fp=addslashes(file_get_contents($_FILES['image']['tmp_name'])); //will store the image to fp 
     } 
       // our sql query 
       $sql = "INSERT INTO images VALUES('null', '{$name}','{$fp}');"; 
          mysql_query($sql) or die("Error in Query insert: " . mysql_error()); 
} 
?> 



<?php 
//SEARCH.PHP PAGE 
    //connect to database.db name = images 
     mysql_connect("localhost", "root", "") OR DIE (mysql_error()); 
     mysql_select_db ("image") OR DIE ("Unable to select db".mysql_error()); 
//display all the image present in the database 

     $msg=""; 
     $sql="select * from images"; 
     if(mysql_query($sql)) 
     { 
      $res=mysql_query($sql); 
      while($row=mysql_fetch_array($res)) 
      { 
        $id=$row['id']; 
        $name=$row['name']; 
        $image=$row['image']; 

        $msg.= '<a href="search.php?id='.$id.'"><img src="data:image/jpeg;base64,'.base64_encode($row['image']). ' " /> </a>'; 

      } 
     } 
     else 
      $msg.="Query failed"; 
?> 
<div> 
<?php 
echo $msg; 
?> 
+2

Irriducibili con buchi di sicurezza. – Boann

1
if(isset($_POST['form1'])) 
{ 
    try 
    { 


     $user=$_POST['username']; 

     $pass=$_POST['password']; 
     $email=$_POST['email']; 
     $roll=$_POST['roll']; 
     $class=$_POST['class']; 



     if(empty($user)) throw new Exception("Name can not empty"); 
     if(empty($pass)) throw new Exception("Password can not empty"); 
     if(empty($email)) throw new Exception("Email can not empty"); 
     if(empty($roll)) throw new Exception("Roll can not empty"); 
     if(empty($class)) throw new Exception("Class can not empty"); 


     $statement=$db->prepare("show table status like 'tbl_std_info'"); 
     $statement->execute(); 
     $result=$statement->fetchAll(); 
     foreach($result as $row) 
     $new_id=$row[10]; 


     $up_file=$_FILES["image"]["name"]; 

     $file_basename=substr($up_file, 0 , strripos($up_file, ".")); 
     $file_ext=substr($up_file, strripos($up_file, ".")); 
     $f1="$new_id".$file_ext; 

     if(($file_ext!=".png")&&($file_ext!=".jpg")&&($file_ext!=".jpeg")&&($file_ext!=".gif")) 
     { 
      throw new Exception("Only jpg, png, jpeg or gif Logo are allow to upload/Empty Logo Field"); 
     } 
     move_uploaded_file($_FILES["image"]["tmp_name"],"../std_photo/".$f1); 


     $statement=$db->prepare("insert into tbl_std_info (username,image,password,email,roll,class) value (?,?,?,?,?,?)"); 

     $statement->execute(array($user,$f1,$pass,$email,$roll,$class)); 


     $success="Registration Successfully Completed"; 

     echo $success; 
    } 
    catch(Exception $e) 
    { 
     $msg=$e->getMessage(); 
    } 
} 
+0

Mentre il codice che risolverebbe il problema è il benvenuto, si prega di aggiungere qualche spiegazione. (Anche una buona idea per rendere gli esempi più piccoli possibile) – user5226582

Problemi correlati