2012-08-31 165 views
0

我無法移動文件。我也想知道是否有方法讓用戶上傳不同的圖片,並讓它自動刪除舊圖片?PHP文件上傳不起作用

move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic".$_FILES["profilepic"]["name"]); 
+0

不要使用'壓制錯誤@',看看你會得到什麼。 – Deepak

+0

您確定您的目的地的*相對*路徑存在且可寫嗎?此外,覆蓋舊的,只需使用靜態文件(你已經在不同的用戶目錄...) –

+0

請確保您有該文件夾您要上傳的圖片 – asprin

回答

1

您已在$ _FILES前刪除@並檢查錯誤。 如果您想將圖片替換爲新圖片,請製作您自己的用戶智能圖片名稱並使用它。

$_POST['username']=test; 

$imagname=$_POST['username']."_img"; 

move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic/".$imagename); 
0

試試這個代碼塊

$imagename = $_FILES['profilepic']['name']; 
    $source = $_FILES['profilepic']['tmp_name']; 
    $imagename = str_replace(" ", "_", $imagename); 
    $target = "userdata/".$_POST['username']."/profilepic" . $imagename; 
    move_uploaded_file($source, $target); 

確保你有寫權限的文件夾userdataplmexicoprofilepic

好習慣:

重命名用戶的文件與你的算法生成一個名稱。由於您想在上傳新照片時替換配置文件照片,因此您可以將user_id與文件名組合起來。所以代碼就變成了。

$localname = $_FILES['profilepic']['name']; 
    $imagename = $user_id."_profile".explode(end(",",$localname)); // $user_id is the user's id 
    $source = $_FILES['profilepic']['tmp_name']; 
    $imagename = str_replace(" ", "_", $imagename); 
    $target = "userdata/".$_POST['username']."/profilepic" . $imagename; 
    move_uploaded_file($source, $target); 

如果用戶上傳不同格式的圖像,此代碼不起作用。