我在移动文件时遇到问题。我还想知道是否有一种方法可以让用户上传不同的图片,并自动删除旧图片?
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);
如果用户上传不同格式的图像,则此代码不起作用。