복붙노트

파일을 디렉토리에 저장하기 전에 업로드 한 파일의 이름을 바꾸는 방법은 무엇입니까?

PHP

파일을 디렉토리에 저장하기 전에 업로드 한 파일의 이름을 바꾸는 방법은 무엇입니까?

아래는 파일을 디렉토리에 업로드하기 위해 사용한 코드입니다. 그것은 잘 작동합니다. 내 주요 질문은 :

move_uploaded_file ()은 업로드 된 파일을 디렉토리에 저장하는 것으로, move_uploaded_file ()이 이름을 설정하는 것입니다.

파일 이름을 임의의 번호로 어떻게 바꿀 수 있습니까?

나는 이렇게하기 위해 노력했다.

      $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"] < 100000)
      && in_array($extension, $allowedExts))
        {
        if ($_FILES["file"]["error"] > 0)
          {
          echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
          }
        else 
          {

            $fileName = $temp[0].".".$temp[1];
            $temp[0] = rand(0, 3000); //Set to random number
            $fileName;

          if (file_exists("../img/imageDirectory/" . $_FILES["file"]["name"]))
            {
            echo $_FILES["file"]["name"] . " already exists. ";
            }
          else
            {
            move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "../img/imageDirectory/" . $_FILES["file"]["name"];
            }
          }
        }
      else
        {
        echo "Invalid file";
        }

$ _FILES [ "file"] [ "name"]과 같은 변수를 변경하고 $ fileName으로 바꿔 보았습니다. 새 이름을 저장할 수 있도록 변수.

해결법

  1. ==============================

    1.move_uploaded_file의 두 번째 매개 변수에서 파일 이름을 변경하여 파일 이름을 간단히 변경할 수 있습니다.

    move_uploaded_file의 두 번째 매개 변수에서 파일 이름을 변경하여 파일 이름을 간단히 변경할 수 있습니다.

    대신에

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

    용도

    $temp = explode(".", $_FILES["file"]["name"]);
    $newfilename = round(microtime(true)) . '.' . end($temp);
    move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);
    

    질문을 반영하도록 변경되었으며 현재 시간을 기준으로 임의의 숫자를 생성하고 원래 업로드 된 파일의 확장자를 추가합니다.

  2. ==============================

    2.이것을 시도해 볼 수 있습니다.

    이것을 시도해 볼 수 있습니다.

    $newfilename= date('dmYHis').str_replace(" ", "", basename($_FILES["file"]["name"]));
    
    move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);
    
  3. ==============================

    3.당신은 정확하게 추측합니다. move_uploaded_file에 대한 매뉴얼 페이지를 읽으십시오. 파일을 저장하려는 두 번째 매개 변수를 설정하십시오.

    당신은 정확하게 추측합니다. move_uploaded_file에 대한 매뉴얼 페이지를 읽으십시오. 파일을 저장하려는 두 번째 매개 변수를 설정하십시오.

    작동하지 않으면 $ fileName에 문제가 있습니다. 가장 최근의 코드를 게시하십시오.

  4. from https://stackoverflow.com/questions/18705639/how-to-rename-uploaded-file-before-saving-it-into-a-directory by cc-by-sa and MIT license