programing

업로드한 파일을 디렉토리에 저장하기 전에 이름을 변경하는 방법

bestcode 2022. 9. 17. 10:47
반응형

업로드한 파일을 디렉토리에 저장하기 전에 이름을 변경하는 방법

아래는 제가 파일을 디렉토리에 업로드하기 위해 사용한 코드입니다.잘 되고 있어요.주요 질문은 다음과 같습니다.

업로드된 파일을 디렉토리에 저장하는 것은 move_movel_file()입니다.또한 move_movel_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; 변수로 대체해 보았습니다.

의 두 번째 파라미터에서 파일 이름을 변경하는 것만으로 파일 이름을 변경할 수 있습니다.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);

질문을 반영하도록 변경되었습니다.는 현재 시간에 따라 난수를 생성하고 원래 업로드된 파일에서 확장자를 추가합니다.

/* create new name file */
$filename   = uniqid() . "-" . time(); // 5dab1961e93a7-1571494241
$extension  = pathinfo( $_FILES["file"]["name"], PATHINFO_EXTENSION ); // jpg
$basename   = $filename . "." . $extension; // 5dab1961e93a7_1571494241.jpg

$source       = $_FILES["file"]["tmp_name"];
$destination  = "../img/imageDirectory/{$basename}";

/* move the file */
move_uploaded_file( $source, $destination );

echo "Stored in: {$destination}";

맞혀봐.의 메뉴얼 페이지를 참조해 주세요.파일을 보존하는 위치에 두 번째 파라미터를 설정합니다.

만약 그것이 작동하지 않는다면, 당신의 시스템에 문제가 있는 것입니다.$fileName최신 코드를 게시해 주세요.

시험해 볼 수 있습니다.

$newfilename= date('dmYHis').str_replace(" ", "", basename($_FILES["file"]["name"]));

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

move_uploaded_file파일이 정상적으로 이동되지 않으면 false가 반환됩니다.이러한 경우, 코드에 무언가를 입력해 로그에 경고할 수 있습니다.이것에 의해, 파일명의 변경에 문제가 있는 이유를 알 수 있습니다.

언급URL : https://stackoverflow.com/questions/18705639/how-to-rename-uploaded-file-before-saving-it-into-a-directory

반응형