0

各ユーザーが自分の画像をアップロードする必要があるプログラムがあります。その画像は (ユーザー名).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";
  }
?> 
4

1 に答える 1

2

フォームからファイルをアップロードすると、サーバーの一時ディレクトリにアップロードされます。Web サイトの適切なディレクトリに移動する必要があります。そうしないと、サーバーがガベージ コレクションを実行するときに削除されます。これを行うには、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";
  }
?>
于 2013-02-08T21:06:51.947 に答える