PHP文件上传不起作用


PHP file-upload not working

我在移动文件时遇到问题。我还想知道是否有一种方法可以让用户上传不同的图片,并自动删除旧图片?

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);

请确保您具有对文件夹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);

如果用户上传不同格式的图像,则此代码不起作用。