2017-06-04 144 views
0

我正在構建一個媒體,我希望我的用戶可以上傳儘可能多的圖像,但他們喜歡我的問題 是如何保存或移動此圖片的文件夾 稱爲光包含文件夾,名爲my_media, my_media文件夾中包含我的PHP文件,如 的index.php多,我可以將此文件移動到 my_media文件夾上傳一次,但我不想 的文件他們爲安全目的,請 有人應該修復我的代碼謝謝。如何將圖像文件保存或移動到包含在我的php文件夾中的文件夾

這是我的代碼

require_once ('connect.php'); 

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

$tmp_dir = "my_media/photo"; 
//it will move to my_media if assign my_media only to the variable $tmp_dir 
//but don't work with $tmp_dir = "my_media/photo" 

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

move_uploaded_file($tmp_name,$tmp_dir . basename($name)); 

    //rename("my_media/photo","my_media/photo". basename($name)); 
$location=$name; 
$fname=$_POST['first_name']; 
$lname=$_POST['last_name']; 


$sql = "INSERT INTO tbl_image (first_name, last_name, image_location) 
VALUES ('$fname', '$lname', '$location')"; 
$res = mysqli_query($con,$sql); 
//with this my the image name is inserted into my database but not into the foldermy_media/photo 
header("Location:imgview.php"); 
} 
+0

您是否在路徑末尾嘗試了斜線'$ tmp_dir =「my_media/photo /」;'? –

+0

我試了一下,但仍然不能正常工作 –

+0

文件夾照片是否存在並且是否可寫?因爲你可能已經用你的用戶創建了它,但是它的嘗試也是通過www-data寫的。 –

回答

0
require_once ('connect.php'); 
if (isset($_POST['submit'])) { 

$tmp_dir = "/my_media/photo/"; 
$name = time().$_FILES["image"]["name"]; 

move_uploaded_file($_FILES["image"]["tmp_name"], $name); 
$location=$name; 
$fname=$_POST['first_name']; 
$lname=$_POST['last_name']; 


$sql = "INSERT INTO tbl_image (first_name, last_name, image_location) 
VALUES ('$fname', '$lname', '$location')"; 
$res = mysqli_query($con,$sql); 
header("Location:imgview.php"); 
} 
+0

不工作sir –

+0

我編輯了我的代碼,請檢查。並確保你的表單是正確的或不是這樣的:

。並提交按鈕名稱爲小寫名稱=「提交」。檢查你的HTML正確 –

0

首先,讓刪除所有/與PHP的DIRECTORY_SEPARATOR替換它們。

$tmp_dir = "my_media". DIRECTORY_SEPARATOR . "photo" . DIRECTORY_SEPARATOR ; 

第二,爲了確保您有權寫入該文件夾,請讓PHP創建該文件夾。

爲此,首先刪除您創建的文件夾。

if(!is_dir($tmp_dir)){ 
    mkdir($tmp_dir); 
    move_uploaded_file($tmp_name,$tmp_dir . basename($name)); 
}else{ 
    move_uploaded_file($tmp_name,$tmp_dir . basename($name)); 
} 

最後但並非最不重要的一點,您可以開放SQL注入。改用準備好的語句。 Example

+0

它創建文件夾,但仍然存儲在my_media圖像文件和新創建的文件夾保持空 –

+0

@CFrancis嘗試'move_uploaded_file($ tmp_name,「my_media」。DIRECTORY_SEPARATOR。「photo」。DIRECTORY_SEPARATOR。basename($ name ));' – user3284463

+0

它只存儲在我的數據庫中的名稱,但不是我剛剛在這裏庫存的文件夾我嘗試所有的要求做但沒有解決方案,但我會做什麼 –

相關問題