2012-04-19 55 views
0

让我解释什么,我希望acomplish:如何将PHP上传图像与预定义的自定义名称/

我希望让我的用户在上传图片作为头像。

我发现了很多php上传教程,但我不知道如何将头像上传到/ avatars文件夹中的user_id.ext。

我希望我很清楚,谢谢。

+0

什么阻止你更改名字后上传完成? – Elen 2012-04-19 13:46:34

+2

http://php.net/move_uploaded_file - 示例#1将'$ name'的值更改为任何您想要的值。 – 2012-04-19 13:48:27

+0

确定,但是如何将$ user_id从上传页面发布到处理图片上传的文件? – m3tsys 2012-04-19 13:51:51

回答

1

在任何上传脚本中,您都需要经过几个基本步骤。首先,您从$ _FILES获取数据,告诉您临时上传文件的位置。您基于某些内容验证文件以确保它不是邪恶/恶意/错误。然后你重命名它并将它移到某个有用的地方。在最后一步中,当您将图像移动到目标位置时,请抓住机会根据需要命名该文件。如果您正在处理用户的帐户,那么获取用户名,ID,中间名等等并使用它来设置文件名称应该是微不足道的。

+0

确定但是如何将$ user_id从上传页面发布到处理图片上传的文件? – m3tsys 2012-04-19 13:53:00

+0

当您调用处理上载的文件时,将其作为参数发送,或将其存储在$ _SESSION中。或者发送用户名,或者任何你想用来命名文件的东西。 – 2012-04-19 14:01:01

+0

谢谢。我为'user_id'使用了一个会话。 – m3tsys 2012-04-22 20:27:18

0

这个脚本获取上传的文件并将其保存为/avatars/$user_id.ext,从POST检索$user_id

<?php 
if ($_FILES["file"]["error"] > 0) { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
} else { 
    move_uploaded_file($_FILES["file"]["tmp_name"], "/avatar/{$_POST['user_id']}.ext"); 
    echo "Stored in: " . "/avatar/{$_POST['user_id']}.ext"; 

}  
?> 

这是形式:

<form method="POST" enctype="multipart/form-data"> 
<input type="file" name="file"> 
<input type="hidden" name="user_id" value="<?php echo $user_id ?>"> 
<input type="submit" value="submit"></form> 
+0

如果我知道任何人''user_id'我可以改变他们的头像。 – 2012-04-19 14:33:01

+0

是的,没错,但我认为他已经有了一个基本的授权系统,他可以在我的代码中添加一些条件(比如'$ _COOKIE ['user'] == $ dbrow ['user'] && $ _COOKIE [ 'hashpwd'] == $ dbrow ['pwd'] && $ _POST ['userid'] == $ dbrow ['userid']').. Mmh,确实会使$ user_id无用。但我只是举了一个例子来说明如何实现这一点,我确信他会与其他授权代码一起实施。 – 2012-04-19 15:01:34