保存上传的文件,其名称由变量指定

时间:2014-07-22 23:29:58

标签: php

因此,用户可以为我正在创建的网站上传个人资料图片 - 下面的脚本运行正常并按预期保存文件,但是我想在上传时重新命名文件以匹配用户名用户 - 我几乎让它工作,但它保存文件没有文件扩展名。

session_start();
$filename = $_SESSION['username'];


$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts)) {
  if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_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 "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
    if (file_exists("upload/" . $_FILES["file"]["name"])) {
      echo $_FILES["file"]["name"] . " already exists. ";
    } else {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
    }
  }
} else {
  echo "Invalid file";
}

我尝试的是改变

move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);

move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $filename;

这导致我拥有正确的文件名,只是没有扩展名,这显然取决于他们上传的文件类型。

2 个答案:

答案 0 :(得分:0)

看起来您正在寻找pathinfo来查找扩展名,正如this answer所示。

$info = pathinfo($_FILES["file"]["name"]);

move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/$filename." . $info['extension']);

答案 1 :(得分:0)

你可以获得PATHINFO_EXTENSION。

$filename = $_FILES['file']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);

然后将其添加到要保存文件的目录中。