업로드 원칙 및 구성
1.1 원칙
클라이언트 파일을 서버에 업로드한 후 서버측 파일(임시 파일)을 지정된 디렉터리로 이동합니다.
1.2 클라이언트 구성
필수: 양식 페이지(업로드 파일 선택);
구체적으로: 전송 방법은 POST이며 enctype="multipart/form-data"attribute을 추가합니다. 둘 다 필수입니다( 그러나 둘 다 있습니다. 장점과 단점 또한 업로드 방법과 업로드된 파일의 호출을 제한합니다. 이에 대해서는 나중에 언급하겠습니다.)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="doAction.php" method="post" enctype="multipart/form-data"> 请选择您要上传的文件: <input type="file" name="myFile" /><br/> <input type="submit" value="上传"/> </form> <?php ?> </body> </html>
첫 번째는 양식 페이지입니다(프론트 엔드 문제는 자동으로 무시하세요...). 또 다른 점은 입력에 type="file"이 사용된다는 것입니다(PHP 등의 강력한 확장을 반영).
그럼 doAction
<?php //$_FILES:文件上传变量 //print_r($_FILES); $filename=$_FILES['myFile']['name']; $type=$_FILES['myFile']['type']; $tmp_name=$_FILES['myFile']['tmp_name']; $size=$_FILES['myFile']['size']; $error=$_FILES['myFile']['error']; //将服务器上的临时文件移动到指定位置 //方法一move_upload_file($tmp_name,$destination) //move_uploaded_file($tmp_name, "uploads/".$filename);//文件夹应提前建立好,不然报错 //方法二copy($src,$des) //以上两个函数都是成功返回真,否则返回false //copy($tmp_name, "copies/".$filename); //注意,不能两个方法都对临时文件进行操作,临时文件似乎操作完就没了,我们试试反过来 copy($tmp_name, "copies/".$filename); move_uploaded_file($tmp_name, "uploads/".$filename); //能够实现,说明move那个函数基本上相当于剪切;copy就是copy,临时文件还在 //另外,错误信息也是不一样的,遇到错误可以查看或者直接报告给用户 if ($error==0) { echo "上传成功!"; }else{ switch ($error){ case 1: echo "超过了上传文件的最大值,请上传2M以下文件"; break; case 2: echo "上传文件过多,请一次上传20个及以下文件!"; break; case 3: echo "文件并未完全上传,请再次尝试!"; break; case 4: echo "未选择上传文件!"; break; case 5: echo "上传文件为0"; break; } }
먼저 print_r($_FILES)
Array ( [myFile] => Array ( [name] => 简历.doc [type] => application/msword [tmp_name] => D:\wamp\tmp\php1D78.tmp [error] => 0 [size] => 75776 ) )
의 정보를 보세요rrreee그래서 얻는 것은
2차원 배열입니다. 사용 방법은 모두 기본입니다(사실 저는 줄이는 것을 좋아합니다. ;
기본적으로 장황하지 않아도 한 눈에 알 수 있는 내용입니다. 두 가지 핵심 사항이 있습니다. tmp_name 임시 파일 이름; 오류 오류 메시지(코드 이름, 나중에 사용할 수 있음);
그런 다음 doAction의 마지막 부분을 살펴보고 오류 메시지를 사용하여 사용자에게 피드백을 제공해야 합니다. 오류가 보고된 이유와 오류 메시지가 무엇인지 설명해야 합니다. 1.3 오류 보고에 대하여- -오류 보고의 이유는 기본적으로 파일 업로드를 위한 서버 구성을 초과하거나 준수하지 않는 경우, 서버 측 구성에는 어떤 것이 있나요? 먼저 우리가 사용한 것을 업로드해 보세요. POST, upload따라서 php.ini에서 다음 항목을 찾으세요. file_upload:Onupload_tmp_dir=——임시 파일 저장 디렉터리upload_max_filesize
=2Mmax_file_uploads=20——1회 업로드 허용 최대 파일 개수 (위와 차이점 참고, 크기가 있으면 생각하지 마세요) post_max_size=8M - 포스트 방식으로 전송되는 데이터의 최대값 기타 관련 구성 max_exectuion_time=- 1 - 프로그램이 서버 리소스를 점유하는 것을 방지하기 위한 최대 실행 시간 max_input_time=60max_input_nesting_level=64 - 입력 중첩 깊이 memory_limit=128M - 단일 스레드의 최대 독립 메모리 사용량 , 그것은 자원 구성에 관한 것입니다. --오류 번호
UPLOAD_ERR_OK 값: 0; 오류가 발생하지 않았으며 파일이 성공적으로 업로드되었습니다.
UPLOAD_ERR_INI_SIZE 값: 1; 업로드된 파일이 php.ini의 upload_max_filesize 옵션 제한을 초과했습니다.
UPLOAD_ERR_FORM_SIZE 값: 2; 업로드된 파일의 크기가 HTML 형식의 MAX_FILE_SIZE 옵션에 지정된 값을 초과합니다.
UPLOAD_ERR_PARTIAL 값: 3 파일의 일부만 업로드되었습니다.
위 내용은 PHP의 파일 업로드 원리와 오류 보고 이유에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!