2015-02-10 19 views
-1

我創建了一個簡單增加產品形式,這是它的外觀:存儲和顯示圖像文件DROM分貝

<form id="loginForm" name="loginForm" method="post" enctype="multipart/form-data" action="ads_include/ads_v1_normal_priori.php"> 
    <label class="control-label" for="input01">Naziv oglasa</label> 
    <div class="controls"> 
     <input type="text" name="naziv" id="naziv" class="form-control"> 
    </div> 
    <label class="control-label">Opis oglasa</label> 
    <div class="controls"> 
     <div class="textarea"> 
      <textarea type="" name="opis" id="opis" class="form-control" rows="5"></textarea> 
     </div> 
    </div> 
    <label class="control-label">Slika oglasa</label> 
    <div class="controls"> 
     <input type="file" name="image" class="form-control"> 
    </div> 
    <label class="control-label" for="input02">Kategorija oglasa</label> 
    <div class="controls"> 
     <input type="text" name="kategorija" id="kategorija" class="form-control"> 
    </div> 
    <label class="control-label" for="input03">Kontakt telefon</label> 
    <div class="controls"> 
     <input type="text" name="tel" id="tel" class="form-control"> 
    </div> 
    <label class="control-label" for="input04">Adresa (1)</label> 
    <div class="controls"> 
     <input type="text" name="adresa" id="adresa" class="form-control"> 
    </div> 
    <label class="control-label" for="input05">Adresa (2)</label> 
    <div class="controls"> 
     <input type="text" name="adresa2" id="adresa2" class="form-control"> 
    </div> 
    <label class="control-label" for="input06">Adresa (3)</label> 
    <div class="controls"> 
     <input type="text" name="adresa3" id="adresa3" class="form-control"> 
    </div> 
    <label class="control-label" for="input07">Drzava</label> 
    <div class="controls"> 
     <input type="text" name="drzava" id="drzava" class="form-control"> 
    </div> 
    <label class="control-label" for="input08">Grad</label> 
    <div class="controls"> 
     <input type="text" name="grad" id="grad" class="form-control"> 
    </div> 
    <label class="control-label" for="input09">Mesto</label> 
    <div class="controls"> 
     <input type="text" name="mesto" id="mesto" class="form-control"> 
    </div> 
    <label class="control-label" for="input10">Datum reg. oglasa</label> 
    <div class="controls"> 
     <input type="text" name="datumPostavljana" id="datumPostavljana" class="form-control"> 
    </div> 
    <label class="control-label" for="input11">Datum odj.oglasa</label> 
    <div class="controls"> 
     <input type="text" name="datumBrisanja" id="datumBrisanja" class="form-control"> 
    </div><br/> 
    <div class="controls"> 
     <input type="submit" value="Dodaj oglas" class="btn btn-success"> 
     <input type="submit" value="Obriši" class="btn btn-default"> 
    </div> 
</form> 

這是數據存儲到數據庫文件:

<?php 
    //Start session 
    session_start(); 

    //Include database connection details 
    require_once('config.php'); 

    //Array to store validation errors 
    $errmsg_arr = array(); 

    //Validation error flag 
    $errflag = false; 

    //Connect to mysql server 
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
    if(!$link) { 
     die('Failed to connect to server: ' . mysql_error()); 
    } 

    //Select database 
    $db = mysql_select_db(DB_DATABASE); 
    if(!$db) { 
     die("Unable to select database"); 
    } 

    //Function to sanitize values received from the form. Prevents SQL injection 
    function clean($str) { 
     $str = @trim($str); 
     if(get_magic_quotes_gpc()) { 
      $str = stripslashes($str); 
     } 
     return mysql_real_escape_string($str); 
    } 

    //Sanitize the POST values 
    $naziv = clean($_POST['naziv']); 
    $opis = clean($_POST['opis']); 
    $kategorija = clean($_POST['kategorija']); 
    $tel = clean($_POST['tel']); 
    $adresa = clean($_POST['adresa']); 
    $drzava = clean($_POST['drzava']); 
    $grad = clean($_POST['grad']); 
    $mesto = clean($_POST['mesto']); 
    $datumPostavljana = clean($_POST['datumPostavljana']); 
    $datumBrisanja = clean($_POST['datumBrisanja']); 

    //Input Validations 
    if($naziv == '') { 
     $errmsg_arr[] = 'Naziv missing'; 
     $errflag = true; 
    } 
    if($opis == '') { 
     $errmsg_arr[] = 'Opis missing'; 
     $errflag = true; 
    } 
    if($kategorija == '') { 
     $errmsg_arr[] = 'Kategorija missing'; 
     $errflag = true; 
    } 
    if($tel == '') { 
     $errmsg_arr[] = 'Telefon missing'; 
     $errflag = true; 
    } 
    if($adresa == '') { 
     $errmsg_arr[] = 'Adresa missing'; 
     $errflag = true; 
    } 
    if($drzava == '') { 
     $errmsg_arr[] = 'Drzava missing'; 
     $errflag = true; 
    } 
    if($grad == '') { 
     $errmsg_arr[] = 'Grad missing'; 
     $errflag = true; 
    } 
    if($mesto == '') { 
     $errmsg_arr[] = 'Mesto missing'; 
     $errflag = true; 
    } 
    if($datumPostavljana == '') { 
     $errmsg_arr[] = 'Datum postavljanja missing'; 
     $errflag = true; 
    } 
    if($datumBrisanja == '') { 
     $errmsg_arr[] = 'Datum isteka missing'; 
     $errflag = true; 
    } 


    //Check for duplicate login ID 
    if($login != '') { 
     $qry = "SELECT * FROM oglas WHERE link='$naziv'"; 
     $result = mysql_query($qry); 
     if($result) { 
      if(mysql_num_rows($result) > 0) { 
       $errmsg_arr[] = 'Naziv already in use'; 
       $errflag = true; 
      } 
      @mysql_free_result($result); 
     } 
     else { 
      die("Query failed"); 
     } 
    } 

    //If there are input validations, redirect back to the registration form 
    if($errflag) { 
     $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
     session_write_close(); 
     header("location: ../add_ads_normal.php"); 
     exit(); 
    } 

    //Create INSERT query 
    $qry = "INSERT INTO oglas (naziv, opis, kategorija, tel, adresa, adresa2, adresa3, drzava, grad, mesto, datumPostavljana, datumBrisanja) 
    VALUES('$naziv','$opis','$kategorija','$tel','$adresa','$adresa2','$adresa3','$drzava','$grad','$mesto','$datumPostavljana','$datumBrisanja')"; 
    $result = @mysql_query($qry); 


    //Check whether the query was successful or not 
    if($result) { 
     header("location: ../add_ads_normal.php?successfull_add_1_row_in_oglas_v1"); 
     exit(); 
    }else { 
     die("Query failed"); 
    } 
?> 

我的問題是:如何將圖像存儲在數據庫中並顯示它?我需要在第二頁上使用哪些代碼才能使其正常工作?

+0

我需要存儲和顯示來自數據庫的圖像文件 – Mile 2015-02-10 13:42:55

+0

我嘗試使用一些代碼但不工作 – Mile 2015-02-10 13:43:19

回答

1

首先,您需要一個能夠處理文件上傳的HTML表單。這意味着表單需要具有enctype="multipart/form-data"屬性,我認爲您擁有該屬性。

接下來,在您接收PHP腳本時,此信息將位於$_FILES全局變量中。如果你的<input type="file">name="myfile",那麼這個上傳文件的元信息將在$_FILES['myfile']。如果您使用var_dump進行檢查,則會在tmp_name條目中看到上傳文件的位置。

(有關上述情況,谷歌爲「PHP文件上傳」。更多信息)

接下來,你可以使用PHP的file_get_contents功能來讀取文件的內容,並將其存儲在數據庫中。在將它放入SQL查詢之前,我會首先使用base64_encode將它轉換爲一些ASCII安全的字符串。

您還應該將文件的文件類型存儲在數據庫中,這樣您就知道需要從PHP輸出發送什麼類型的頭文件來告訴瀏覽器文件類型。這種文件類型可以使用FileInfo extension進行檢測,您可以使用PECL進行安裝。

將所有數據存儲在數據庫中,然後檢索並將其輸出到瀏覽器後,就需要獲取文件類型,內容base64_decode,設置正確的標題(不要忘記Content-Length頭),然後回顯字節。