업로드된 파일의 이름을 재정의하는 방법에 대한 자세한 예

怪我咯
풀어 주다: 2023-03-07 17:46:01
원래의
2769명이 탐색했습니다.

파일을 업로드할 때 업로드 파일 경로를 지정해야 합니다. 그러나 다수의 사용자가 업로드한 서로 다른 파일을 마주하게 되면 이름이 중복될 가능성이 불가피하며 이로 인해 파일이 교체될 수 있습니다. 파일이 손실될 수 있으므로 파일을 업로드하는 것이 중요합니다. 이 장에서는 이에 대해 설명합니다. 업로드된 파일의 이름을 어떻게 정의하나요?

먼저 strstr() 함수를 통해 업로드된 파일의 이름을 가로채서 업로드된 파일의 접미사를 가져옵니다.

그런 다음 time() 함수를 통해 시스템의 현재 타임스탬프를 얻고 업로드된 파일의 이름을 다시 정의한 다음

move_uploaded_file() 함수를 사용하여 파일을 업로드합니다.

파일 업로드를 실행하기 전, 스크립트를 통해 상호 작용할 수 없는 파일에 대한 잠재적 공격 및 불법 관리를 방지하기 위해 is_uploaded_file() 함수를 사용하여 지정된 파일이 HTTP POST를 통해 업로드되었는지 확인해야 합니다. 그렇다면 true를 반환합니다.

is_uploaded_file() 함수

is_uploaded_file() 함수는 지정된 파일이 HTTP POST를 통해 업로드되는지 여부를 결정합니다.

is_uploaded_file(filename)
로그인 후 복사

매개변수 파일 이름 $_FILES['filename']['tmp_name']과 유사한 변수를 지정해야 합니다. 클라이언트에서 업로드한 파일 이름은 사용할 수 없습니다. $_FILES['filename']['name']

업로드된 파일의 이름을 재정의하는 방법에 대한 자세한 예is_uploaded_file() 함수를 사용하여 업로드된 파일을 판단하면 악의적인 사용자가 /etc/passwd와 같이 액세스할 수 없는 파일에 액세스하도록 스크립트를 속일 수 없습니다.

move_uploaded_file() 함수

move_uploaded_file() 함수는 서버의 지정된 위치에 파일을 업로드합니다. 성공하면 true를 반환합니다. 그렇지 않으면 false를 반환하고 구문은 다음과 같습니다.

move_uploaded_file(filename,destination)
로그인 후 복사

파일 이름 매개변수는 업로드된 파일의 임시 파일 이름을 지정합니다. 즉, $_FILES[tmp_name] 매개변수 대상입니다. 파일이 업로드된 후 저장된 새로운 경로와 이름을 나타냅니다. 매개변수 파일 이름이 합법적인 업로드 파일이 아닌 경우

move_uploaded_file()은 false를 반환합니다. 어떤 이유로든 이동할 수 없으면 move_uploaded_file()은 False를 반환하고 경고 메시지가 표시됩니다.

마지막으로 rand 함수를 사용하고 이 함수가 임의로 생성한 임의의 정수를 업로드된 파일의 새 이름으로 사용합니다.

응용예제

업로드한 파일의 이름을 재정의한 예입니다. 업로드한 후 "업로드" 버튼을 클릭하면 프로그램에서 지정한 로컬 경로 아래의 upfile 폴더에 파일이 업로드되고 파일 이름이 재정의됩니다.

업로드된 파일의 이름을 재정의하는 방법에 대한 자세한 예

이 예제의 키 코드는 다음과 같습니다.

<?PHP
header("content-type:text/html;charset=utf-8");
if(!empty($_FILES[up_picture][name])){                                       //判断上传文件是否为空
    if($_FILES[&#39;up_picture&#39;][&#39;error&#39;]>0){                                    //判断文件是否可以上传到服务器
        echo "上传错误";
        switch($_FILES[&#39;up_picture&#39;][&#39;error&#39;]){
            case 1:
                echo "上传文件大小超出配置文件规定值";
                break;
            case 2:
                echo "上传文件大小超出表单中约定值";
                break;
            case 3:
                echo "上传文件不全";
                break;
            case 4:
                echo "没有上传文件";
                break;
        }
    }else{
        if(!is_dir("./upfile/")){                                           //判断指定目录是否存在
            mkdir("./upfile/");                                             //创建目录
        }
        $path=&#39;./upfile/&#39;.time().strstr($_FILES[&#39;up_picture&#39;][&#39;name&#39;],&#39;.&#39;);//定义文件名称和存储位置
        if(is_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;])){           //判断是否通过HTTP POST上传的
            if(!move_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;],$path)){       //执行上传
                echo "上传失败";
            }else{
                echo "文件".time().$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."上传成功,大小为:".$_FILES[&#39;up_picture&#39;][&#39;size&#39;];
            }
        }else{
            echo "上传文件".$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."不合法!";
        }
    }
}
?>
로그인 후 복사

업로드된 파일의 이름을 재정의하는 방법에 대한 자세한 예업로드된 파일의 이름을 정의하는 것은 파일 업로드 프로그램에서 필수적인 기능입니다. 이를 통해 동일한 이름의 파일이 여러 개 존재하게 되는 것을 방지할 수 있습니다. 같은 내용. 자세한 내용은 PHP 파일 처리 주제

[관련 기사 추천]

PHP 파일 업로드 - move_uploaded_file 사용 상세 설명을 참고해주세요. () 기능

위 내용은 업로드된 파일의 이름을 재정의하는 방법에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿