0

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

move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic".$_FILES["profilepic"]["name"]);
4

2 回答 2

1

您在 $_FILES 之前删除了 @ 并检查错误。如果您想将旧图片替换为新图片,请创建您自己的用户明智的图片名称并使用它。

$_POST['username']=test;

$imagname=$_POST['username']."_img";

 move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic/".$imagename);
于 2012-08-31T05:34:24.750 回答
0

试试这段代码

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

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

于 2012-08-31T05:37:07.697 回答