我无法移动文件。我也想知道是否有方法让用户上传不同的图片,并让它自动删除旧图片?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