2012-08-31 169 views
0

我无法移动文件。我也想知道是否有方法让用户上传不同的图片,并让它自动删除旧图片?PHP文件上传不起作用

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

不要使用'压制错误@',看看你会得到什么。 – Deepak

+0

您确定您的目的地的*相对*路径存在且可写吗?此外,覆盖旧的,只需使用静态文件(你已经在不同的用户目录...) –

+0

请确保您有该文件夹您要上传的图片 – asprin

回答

1

您已在$ _FILES前删除@并检查错误。 如果您想将图片替换为新图片,请制作您自己的用户智能图片名称并使用它。

$_POST['username']=test; 

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

move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic/".$imagename); 
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); 

确保你有写权限的文件夹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); 

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