2017-03-16 40 views
-2

所以我有一個管理面板內置,我想能夠上傳圖像,更改圖像文件的名稱爲一個數字ID由多少行生成數據庫中已經有了。然後讓他們在一個畫廊爲遊客展示。我已經環視了一下互聯網幾天,嘗試不同的腳本,混合和匹配,但似乎沒有任何工作。這是PHP btw。我認爲這個問題是move_uploaded_file()函數。如果任何人都能想到更好的方法,或者在我的代碼中發現錯誤,那就太棒了。該網站是爲客戶提供的,因此對於及時回覆將更加讚賞。謝謝你們用戶上傳圖像到網站,然後顯示在gallary

require_once("../php/connect.php"); 

function GetImageExtension($imagetype){ 
    if(empty($imagetype)) return false; 
    switch($imagetype){ 
     case 'image/png': return '.png'; 
     default: return false; 
    } 
} 

if (!empty($_FILES['fileToUpload']['name'])){ 
    $file_name = $_FILES['fileToUpload']['name']; 
    $temp_name = $_FILES['fileToUpload']['tmp_name']; 
    $imgtype = $_FILES['fileToUpload']['type']; 
    $ext = GetImageExtension($imgtype); 

    $query1 = "SELECT COUNT(*) FROM gal"; 
    $count = mysqli_query($dbc, $query1); 

    $imagename = $count + 0; 
    $newfilename = "$imagename" . ".png"; 

    //Debug 
    echo "hello <br>"; 
    echo "$newfilename"; 
    //End Debug 

    $folder = "/uploads/"; 
    if(move_uploaded_file($_FILES['image']['tmp_name'], "$folder" . $_FILES['image']['$newfilename'])){ 
     $query2 = "INSERT INTO `nocas_19164639_admin`.`gal` (`id`, `name`, `active`) VALUES (NULL, '$newfilename', '1')"; 
     mysqli_query($dbc, $query2); 
    }else{ 
     exit("Error while uploading file..."); 
    } 
} 

回答

0

我可以問你爲什麼要將文件重命名爲與它所在的行有關的數字嗎? 你做一個簡單的任務非常複雜。 您不應該將圖像存儲在您的數據庫中,您應該將它們上載到您站點內的目錄並將相應的名稱存儲在數據庫中。

我不明白將名稱更改爲數字的全部原因,但它只是使一切變得混亂。

你應該這樣做。

在您的配置文件創建一個目錄路徑..

defined("UPLOAD_DIRECTORY") ? null : define("UPLOAD_DIRECTORY", __DIR__ . DS . "uploads"); 

我已經創造了mysqli的查詢功能只是讓我不必鍵入它所有的時間。

function query($sql) { 

global $connection; 

return mysqli_query($connection, $sql); 
} 

然後我有一個確認查詢來檢查查詢中的錯誤。

function confirm($result) { 

global $connection; 

if(!$result) { 

    die("QUERY FAILED" . mysqli_error($connection)); 
} 
} 

然後,你可以只是簡單地做這樣的事情來插入數據庫。

$product_image = escape_string($_FILES['file']['name']); 
    $image_temp_location = $_FILES['file']['tmp_name']; 

    move_uploaded_file($image_temp_location, UPLOAD_DIRECTORY . DS . $product_image); 

    $query = query("INSERT INTO products(product_image) VALUES('{$product_image}')"); 
+0

這就是我正在嘗試做的事情。這個號碼的意思是姓名,併發送到數據庫與名稱相同的ID – Wilobate

+0

我不明白將名稱更改爲數字的全部原因,但它只是使一切混亂。 你應該這樣做。 –

+0

嗯,真的,因爲我有我可以參考時顯示它的id。也許我只是推翻了這個過程 – Wilobate