>  기사  >  백엔드 개발  >  PHP 업로드 원리 및 구현

PHP 업로드 원리 및 구현

巴扎黑
巴扎黑원래의
2016-11-11 14:08:381062검색

업로드 원칙 및 간단한 업로드 작업에 대해:


>
1. Form 태그 enctype 속성
enctype="multipart/form- 데이터"는 양식의 MIME 인코딩을 설정하는 데 사용됩니다. 기본적으로 이 인코딩 형식은 application/x-www-form-urlencoded이며 파일 업로드에 사용할 수 없습니다.
multipart/form-data를 사용하고 제출 방법이 Post인 경우에만 파일 데이터를 업로드할 수 있습니다. 완전히 이전됩니다.
2. MAX_FILE_SIZE 히든 필드


MAX_FILE_SIZE 히든 필드(단위:바이트)는 파일 입력 필드 앞에 위치해야 하며, 해당 값은 수신된 파일의 최대 크기입니다. 이는 브라우저에 대한 권장사항이며, PHP도 이를 확인합니다.
이 설정은 브라우저 측에서 쉽게 우회할 수 있으므로 이 기능을 사용하여 대용량 파일을 차단할 것으로 기대하지 마세요. (단, 편의성을 고려하여 이 항목을 양식에 추가하는 것이 좋습니다. 사용자가 대용량 파일을 업로드하기 위해 시간을 허비하다 파일이 너무 커서 업로드가 실패했다는 것을 발견하는 수고를 피할 수 있기 때문입니다.)



//upload.php print_r($_FILES);?>Array(
[file] => Array
(
) [ 이름] => image.jpg
[유형] => image/jpeg
[tmp_name] => F:wamptmpphp41BB.tmp

[오류] => 0

[크기] => 73886 )

)




3. 전역변수 $_FILES 적용

$_FILES['file']['name' ]; // 업로드된 파일의 원본 파일 이름
$_FILES['file']['type'] //업로드된 파일의 MIME 유형
$_FILES['file'][' size']; //업로드된 파일의 크기(바이트)

$_FILES['file']['tmp_name'] //파일 업로드 후 서버에 저장되는 임시 파일 이름()

$_FILES['file']['error']; //파일 업로드 오류 코드


4. 기본적으로 업로드된 파일은 다음 위치에 저장됩니다. 서버의 임시 폴더 및 해당 디렉토리는 php.ini에 설정됩니다.

php.ini의 파일 업로드와 관련된 몇 가지 일반적인 설정:

file_uploads //다음을 통해 파일 업로드를 허용하도록 전환합니다. HTTP. 기본값은 ON이며, 이는 upload_tmp_dir이 켜져 있음을 의미합니다. //파일은 서버의 임시 파일이 저장되는 위치에 업로드됩니다. 지정하지 않으면 시스템 기본 임시 폴더인 upload_max_filesize가 사용됩니다. 업로드가 허용된 파일의 크기. 기본값은 2Mpost_max_size입니다. //양식의 모든 값을 포함하여 양식 POST를 통해 PHP로 수신할 수 있는 최대값을 나타냅니다. 기본값은 8M



간단한 코드:


//업로드된 파일 정보 가져오기
$fileName=$_FILES['file']['name'] $fileType=$_FILES['file']['type']; $fileError=$_FILES['file']['error']; $fileSize=$_FILES['file']['size']; $tempName=$_FILES['file']['tmp_name'];// 임시 파일 이름

//업로드 파일 형식 정의
$typeList = array("image/jpeg","image/jpg","image/png","image/gif") // 허용되는 유형 정의

if($fileError>0){                                                                   using   using using         using using          's' 's'를 통해 's ‐   ‐ ‐ ‐‐ ​ ​ ​ ​ ​ ​ ​ ​​ ​ ​ ​ ​      upload_max_filesize 옵션의 값을 초과합니다. ";
"            break ";
                                 break; 사례 6: $message="임시 폴더를 찾을 수 없습니다.";
break ; 사례 7:                           $message="파일 쓰기 실패";  
                break;                               ~ 휴식 $message);

} if(!is_uploaded_file($tempName)){ //업로드한 파일인지 확인 POST
종료("HTTP POST를 통해 업로드되지 않음");
}else{                                                                                           업로드 바이러스 파일 확장자를 이미지 형식으로 변경하는 등 악성 파일
종료("업로드한 파일은 사진이 아닙니다." ); //특정 양식 업로드 파일 제한 크기
exit("업로드된 파일이 제한 크기를 초과했습니다.");
         }else{                                                          > 작성자: iconv utf-8에서 gbk로 출력
$fileName=str_replace(".", time().".", $fileName);//사진에서 이름이 중복된 파일을 덮어쓰지 않도록 이름 뒤에 타임스탬프를 추가하세요
if(move_uploaded_file($tempName, "uploads/".$fileName)){ echo "파일이 성공적으로 업로드되었습니다! ", 🎜>



5. PHP에서 파일을 업로드하는 몇 가지 일반적인 기능 정보:

file_exists() // 파일이나 디렉터리가 존재하는지 확인 is_uploaded_file() // HTTP POST를 통해 파일이 업로드되었는지 확인 move_uploaded_file() // 업로드된 파일을 새 위치로 이동 is_writable() // 주어진 내용을 확인 파일 이름이 쓰기 가능한지 여부 iconv() //문자 인코딩 변환 str_replace() //문자열 대체(이름이 중복되지 않도록 파일 이름 변경) getimagesize() //이미지 파일인지 확인(다른 형식의 파일은 변경됨) 접미사 이름이 변경되어도) 감지 가능)


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:SAE 운영 기록다음 기사:SAE 운영 기록