我在移动文件时遇到问题。我还想知道是否有办法让用户上传不同的图片,并让它自动删除旧的?
move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic".$_FILES["profilepic"]["name"]);
我在移动文件时遇到问题。我还想知道是否有办法让用户上传不同的图片,并让它自动删除旧的?
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);
如果用户上传不同格式的图像,此代码将不起作用。