【问题标题】:How to php upload a image with a predefined custom name/如何 php 上传具有预定义自定义名称的图像/
【发布时间】:2012-04-19 22:03:10
【问题描述】:

让我解释一下我希望完成的事情:

我想让我的用户上传一张图片作为头像。

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

希望我说清楚了,谢谢。

【问题讨论】:

  • 上传完成后是什么阻止您更改名称?
  • php.net/move_uploaded_file - 示例 #1 将 $name 的值更改为您想要的任何值。
  • 好的,但是如何将 $user_id 从上传页面发布到处理图像上传的文件中?
  • 您不应该在表单中发布$user_id。任何人都可以更改该值并替换其他用户的头像。你不能从会话或其他身份验证源获得$user_id 吗?我们不知道您的应用程序的结构,因此无法提供完整/特定的解决方案。

标签: php upload avatar


【解决方案1】:

在任何上传脚本中,您都需要完成几个基本步骤。首先,您从 $_FILES 获取数据,告诉您临时上传文件在哪里。您根据某些东西验证文件以确保它不是邪恶/恶意/错误的。然后你重命名它并将它移动到有用的地方。在您的最后一步中,当您将图像移动到它要去的地方时,请借此机会随意命名文件。如果您正在处理用户的帐户,那么获取用户名、id、中间名等并使用它来设置文件名应该很简单。

【讨论】:

  • 好的,但是如何将 $user_id 从上传页面发布到处理图像上传的文件中?
  • 调用处理上传的文件时作为参数发送,或者存储在$_SESSION中。或者发送用户名,或者你真正想用来命名文件的任何内容。
【解决方案2】:

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

<?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>

【讨论】:

  • 如果我认识其他人 $user_id 我可以更改他们的头像。
  • 是的,没错,但我假设他已经有一个基本的授权系统,他可以在我的代码中添加一些条件(如$_COOKIE['user'] == $dbrow['user'] &amp;&amp; $_COOKIE['hashpwd'] == $dbrow['pwd'] &amp;&amp; $_POST['userid'] == $dbrow['userid']).. 嗯,这将使$user_id确实没用。但我只是发布了一个如何实现这一点的示例,我确信他会与其他授权代码一起实现这一点。
猜你喜欢
  • 1970-01-01
  • 2015-04-02
  • 2014-08-29
  • 2013-08-07
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多