2017-07-03 165 views
-2

我正在嘗試製作一個用戶可以上傳和更新其個人資料照片的個人資料頁面。我已經有一個功能的圖像上傳器,但它沒有連接到我的數據庫。所以每當我上傳&刷新,圖像重置。我想知道如何連接我的數據庫並將上傳的圖像(或其目標)存儲在我的數據庫中。如何將我的圖片上傳器與MySQL數據庫連接起來?

HTML表單:

 <div class="pic"><div id="imgContainer"> 
    <form enctype="multipart/form-data" action="image_upload_demo_submit.php" method="post" name="image_upload_form" id="image_upload_form"> 
    <div id="imgArea"><img src="./img/default.jpg"> 
     <div class="progressBar"> 
     <div class="bar"></div> 
     <div class="percent">0%</div> 
     </div> 
     <div id="imgChange"><span>Change Photo</span> 
     <input type="file" accept="image/*" name="image_upload_file" id="image_upload_file"> 
     </div> 
    </div> 
    </form> 
</div></div> 

Submit.php:

<?php 
include('./functions.php'); 
/*defined settings - start*/ 
ini_set("memory_limit", "99M"); 
ini_set('post_max_size', '20M'); 
ini_set('max_execution_time', 600); 
define('IMAGE_SMALL_DIR', './uploades/small/'); 
define('IMAGE_SMALL_SIZE', 50); 
define('IMAGE_MEDIUM_DIR', './uploades/medium/'); 
define('IMAGE_MEDIUM_SIZE', 250); 
/*defined settings - end*/ 

if(isset($_FILES['image_upload_file'])){ 
    $output['status']=FALSE; 
    set_time_limit(0); 
    $allowedImageType = array("image/gif", "image/jpeg", "image/pjpeg", "image/png", "image/x-png" ); 

    if ($_FILES['image_upload_file']["error"] > 0) { 
     $output['error']= "Error in File"; 
    } 
    elseif (!in_array($_FILES['image_upload_file']["type"], $allowedImageType)) { 
     $output['error']= "You can only upload JPG, PNG and GIF file"; 
    } 
    elseif (round($_FILES['image_upload_file']["size"]/1024) > 4096) { 
     $output['error']= "You can upload file size up to 4 MB"; 
    } else { 
     /*create directory with 777 permission if not exist - start*/ 
     createDir(IMAGE_SMALL_DIR); 
     createDir(IMAGE_MEDIUM_DIR); 
     /*create directory with 777 permission if not exist - end*/ 
     $path[0] = $_FILES['image_upload_file']['tmp_name']; 
     $file = pathinfo($_FILES['image_upload_file']['name']); 
     $fileType = $file["extension"]; 
     $desiredExt='jpg'; 
     $fileNameNew = rand(333, 999) . time() . ".$desiredExt"; 
     $path[1] = IMAGE_MEDIUM_DIR . $fileNameNew; 
     $path[2] = IMAGE_SMALL_DIR . $fileNameNew; 

     if (createThumb($path[0], $path[1], $fileType, IMAGE_MEDIUM_SIZE, IMAGE_MEDIUM_SIZE,IMAGE_MEDIUM_SIZE)) { 

      if (createThumb($path[1], $path[2],"$desiredExt", IMAGE_SMALL_SIZE, IMAGE_SMALL_SIZE,IMAGE_SMALL_SIZE)) { 
       $output['status']=TRUE; 
       $output['image_medium']= $path[1]; 
       $output['image_small']= $path[2]; 
      } 
     } 
    } 
    echo json_encode($output); 
} 
?> 

的functions.php:

<?php 
function createDir($path){  
    if (!file_exists($path)) { 
     $old_mask = umask(0); 
     mkdir($path, 0777, TRUE); 
     umask($old_mask); 
    } 
} 

function createThumb($path1, $path2, $file_type, $new_w, $new_h, $squareSize = ''){ 
    /* read the source image */ 
    $source_image = FALSE; 

    if (preg_match("/jpg|JPG|jpeg|JPEG/", $file_type)) { 
     $source_image = imagecreatefromjpeg($path1); 
    } 
    elseif (preg_match("/png|PNG/", $file_type)) { 

     if (!$source_image = @imagecreatefrompng($path1)) { 
      $source_image = imagecreatefromjpeg($path1); 
     } 
    } 
    elseif (preg_match("/gif|GIF/", $file_type)) { 
     $source_image = imagecreatefromgif($path1); 
    }  
    if ($source_image == FALSE) { 
     $source_image = imagecreatefromjpeg($path1); 
    } 

    $orig_w = imageSX($source_image); 
    $orig_h = imageSY($source_image); 

    if ($orig_w < $new_w && $orig_h < $new_h) { 
     $desired_width = $orig_w; 
     $desired_height = $orig_h; 
    } else { 
     $scale = min($new_w/$orig_w, $new_h/$orig_h); 
     $desired_width = ceil($scale * $orig_w); 
     $desired_height = ceil($scale * $orig_h); 
    } 

    if ($squareSize != '') { 
     $desired_width = $desired_height = $squareSize; 
    } 

    /* create a new, "virtual" image */ 
    $virtual_image = imagecreatetruecolor($desired_width, $desired_height); 
    // for PNG background white-----------> 
    $kek = imagecolorallocate($virtual_image, 255, 255, 255); 
    imagefill($virtual_image, 0, 0, $kek); 

    if ($squareSize == '') { 
     /* copy source image at a resized size */ 
     imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $orig_w, $orig_h); 
    } else { 
     $wm = $orig_w/$squareSize; 
     $hm = $orig_h/$squareSize; 
     $h_height = $squareSize/2; 
     $w_height = $squareSize/2; 

     if ($orig_w > $orig_h) { 
      $adjusted_width = $orig_w/$hm; 
      $half_width = $adjusted_width/2; 
      $int_width = $half_width - $w_height; 
      imagecopyresampled($virtual_image, $source_image, -$int_width, 0, 0, 0, $adjusted_width, $squareSize, $orig_w, $orig_h); 
     } 

     elseif (($orig_w <= $orig_h)) { 
      $adjusted_height = $orig_h/$wm; 
      $half_height = $adjusted_height/2; 
      imagecopyresampled($virtual_image, $source_image, 0,0, 0, 0, $squareSize, $adjusted_height, $orig_w, $orig_h); 
     } else { 
      imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $squareSize, $squareSize, $orig_w, $orig_h); 
     } 
    } 

    if (@imagejpeg($virtual_image, $path2, 90)) { 
     imagedestroy($virtual_image); 
     imagedestroy($source_image); 
     return TRUE; 
    } else { 
     return FALSE; 
    } 
} 
?> 

如何連接&存儲每個用戶上傳的圖像。我是否需要創建一個單獨的PHP文件?幫助真的很感激..

回答

0

您需要將上傳的文件路徑插入到您的數據庫中,當您想要顯示圖像時,只需從數據庫中檢索文件路徑並將其添加到標記的src屬性中即可。

根據你的代碼註釋
更新後,我不知道你的數據庫模式,但是這裏有一個一般的UPDATE查詢。

你在這些行

$output['status']=TRUE; 
$output['image_medium']= $path[1]; 
$output['image_small']= $path[2]; 


變化根據您的實際數據的查詢後,執行下面的查詢Submit.php

UPDATE table_name 
SET medium_image = $path[1], small_image = $path[2] 
WHERE user_id = provide_user_id_here 
+0

插入查詢將插入一個新行,你能告訴我如何我的UPDATE查詢看起來像上面給出的腳本。 –

+0

檢查更新的答案 –

相關問題