2014-11-05 17 views
5

Jak mogę przechowywać i wyświetlać obrazy w bazie danych MySQL. Do tej pory mam tylko napisany kod, aby uzyskać obrazy z użytkownikiem i przechowywać je w folderze kod, który napisałem do tej pory jest: plik HTMLJak przechowywać obrazy w bazie danych mysql za pomocą php

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

PHP PLIK

$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

wouldnt't Polecam przechowywania obrazu w bazie danych, co teraz robisz jest lepszym podejściem. Wszystko, co musisz zrobić, to zapisać ścieżkę do obrazu w bazie danych. –

+0

Dzięki za pomoc, zrozumiałem to. Teraz przechowuję nazwę przesłanego pliku w mojej bazie danych i pobieraję tę nazwę, aby otworzyć obraz tam, gdzie go chcę. –

Odpowiedz

4

Znalazłem odpowiedź, Dla tych, którzy szukają tego samego, oto jak to zrobiłem. Nie należy przesyłać obrazów do bazy danych, zamiast zapisywać nazwę przesłanego pliku w bazie danych, a następnie pobrać nazwę pliku i używać go tam, gdzie ma być wyświetlany obraz.

kod HTML

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

PHP KOD

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); 
} 

CODE, aby wyświetlić obraz

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

Użytkownik może mieć ważne powody przesłania obrazów do bazy danych i może mieć charakter performatywny. To po prostu mało popularne, a więc nie tak dobrze "obsługiwane" (to jest mniej obszerna baza wiedzy). – Strawberry

+5

OSTRZEŻENIE: Powyższy przykładowy kod jest szeroko otwarty dla luk 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

Riddled z dziurami bezpieczeństwa. – 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

Podczas gdy kod, który rozwiąże problem jest mile widziany, proszę dodać wyjaśnienie. (Również dobry pomysł, aby przykłady były jak najmniejsze) – user5226582

Powiązane problemy