我無法移動文件。我也想知道是否有方法讓用戶上傳不同的圖片,並讓它自動刪除舊圖片?PHP文件上傳不起作用
move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic".$_FILES["profilepic"]["name"]);
我無法移動文件。我也想知道是否有方法讓用戶上傳不同的圖片,並讓它自動刪除舊圖片?PHP文件上傳不起作用
move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic".$_FILES["profilepic"]["name"]);
您已在$ _FILES前刪除@並檢查錯誤。 如果您想將圖片替換爲新圖片,請製作您自己的用戶智能圖片名稱並使用它。
$_POST['username']=test;
$imagname=$_POST['username']."_img";
move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic/".$imagename);
試試這個代碼塊
$imagename = $_FILES['profilepic']['name'];
$source = $_FILES['profilepic']['tmp_name'];
$imagename = str_replace(" ", "_", $imagename);
$target = "userdata/".$_POST['username']."/profilepic" . $imagename;
move_uploaded_file($source, $target);
確保你有寫權限的文件夾userdata
,plmexico
,profilepic
。
好習慣:
重命名用戶的文件與你的算法生成一個名稱。由於您想在上傳新照片時替換配置文件照片,因此您可以將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);
如果用戶上傳不同格式的圖像,此代碼不起作用。
不要使用'壓制錯誤@',看看你會得到什麼。 – Deepak
您確定您的目的地的*相對*路徑存在且可寫嗎?此外,覆蓋舊的,只需使用靜態文件(你已經在不同的用戶目錄...) –
請確保您有該文件夾您要上傳的圖片 – asprin