需要帮助将PHP文件上传到用户用户名下的上传文件

时间:2013-02-08 20:47:45

标签: php file-upload

我有一个程序,要求每个用户上传自己的图像。该图片必须是(他们的用户名).png。例如:testuser123.png。自动输入用户用户名的PHP脚本是

<?=$_SESSION['Username']?>

基本上,我需要将文件另存为

<?=$_SESSION['Username']?>.png

虽然我怎么用这个特定的脚本呢?任何帮助将不胜感激!我遇到的问题是我不知道在哪里放置代码的那部分,我不确定它是否会起作用。我知道我的代码需要编辑一下,但我不知道如何。

<?php
$allowedExts = array("png");
$extension = end(explode(".", $_FILES["file"]["name"]));
|| ($_FILES["file"]["type"] == "image/png")
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }
?> 

1 个答案:

答案 0 :(得分:2)

当您通过表单上传文件时,它会上传到服务器的临时目录。您需要将其移动到您网站中的正确目录,否则当服务器进行垃圾回收时,它将被删除。为此,您需要使用move_uploaded_file()。根据您的脚本原样,这就是您需要的内容:

<?php
$allowedExts = array("png");
$extension = end(explode(".", $_FILES["file"]["name"]));
|| ($_FILES["file"]["type"] == "image/png")
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];

    $path = "/path/to/directory";
    move_uploaded_file($_FILES["file"]["tmp_name"], $path."/".$_SESSION['Username'].".png");

    }
  }
else
  {
  echo "Invalid file";
  }
?>