파일을 업로드하려면 HTML 형식의 type=file 형식과 해당 enctype 속성을 사용해야 합니다. 이것이 우리 모두가 사용해야 하는 것입니다. 물론 PHP 함수 라이브러리 중에는 FILE 함수 라이브러리, 문자열형 함수 라이브러리, 디렉토리 함수 라이브러리, $_FILES[] 등을 사용해야 합니다.
아마도 모든 사이트에는 파일 업로드에 대한 많은 제한 사항이 있을 수 있습니다. 이러한 제한 사항에는 파일 형식, 파일 크기, 확장자, 업로드 디렉터리의 존재, 업로드 파일의 존재, 디렉터리의 쓰기 가능성, 가독성, 이름 바꾸기 등이 포함될 수 있습니다. 업로드된 파일과 캐시에서 필요한 디렉토리로 파일을 복사하는 방법.
물론 오류 전처리를 무시할 수는 없습니다. 더 자세히 논의하면 파일 작업에 대한 이벤트 로그 기록을 활성화할 수도 있습니다.
아래에서는 프로그램을 통해 이러한 기능을 구현합니다.
첫 번째는 파일 크기, 파일 확장자 유형, MIMI 유형 및 스위치 변수 삭제 여부를 포함하는 미리 설정된 변수 값입니다.
$MAX_SIZE = 2000000;
$FILE_MIMES = 배열('이미지/jpeg','이미지/jpg','이미지/gif'
,'image/png','application/msword');
$FILE_EXTS = array('.zip','.jpg','.png','.gif');
$DELETABLE = true
; 브라우저 액세스 변수 및 디렉터리 액세스 변수 설정:
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = http://.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]);
$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF' ]
$upload_dir = 파일/;
$upload_url = $url_dir./files/;
$message =;
업로드 디렉토리를 생성하고 이에 따라 권한을 변경합니다:
if (!is_dir(files)) {
if (!mkdir($upload_dir))
die(upload_files 디렉토리가 존재하지 않으며 생성에 실패했습니다);
if (!chmod($upload_dir,0755))
사망(755로의 변경 권한이 실패했습니다.);
}
사용자 요청 처리:
if ($_REQUEST[del] && $DELETABLE) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\n);
fclose($resource);
if (strpos($_REQUEST[del],/.)>0); //해킹 가능
else if (strpos($_REQUEST[del],files/) === false) //해킹 가능
else if (substr($_REQUEST[del],0,6)==files/) {
연결 해제($_REQUEST[del]);
print <script>window.location.href='$url_this?message=삭제되었습니다'</script>;
}
}
else if ($_FILES['사용자파일']) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR]
.$_FILES['사용자파일']['이름'].
.$_FILES['사용자 파일']['유형'].\n);
fclose($resource);
$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['사용자파일']['이름'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,.))))
//파일 크기 확인:
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = 파일 크기가 2MB를 초과했습니다.;
//파일 형식/확장자 확인
else if (!in_array($file_type, $FILE_MIMES)
&& !in_array($file_ext, $FILE_EXTS) )
$message = 죄송합니다. $file_name($file_type)은 업로드가 허용되지 않습니다.;
또 다른
$message = do_upload($upload_dir, $upload_url);
인쇄 <script>window.location.href='$url_this?message=$message'</script>;
}
else if (!$_FILES['userfile']);
또 다른
$message = 잘못된 파일이 지정되었습니다.
우리가 업로드한 파일 목록:
$handle=opendir($upload_dir);
$파일 목록 = ;
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= <a href='$upload_dir$file'>.$file.</a>;
if ($DELETABLE)
$filelist .= <a href='?del=$upload_dir$file' title='삭제'>x</a>;
$filelist .= <sub><small><small><font color=grey> .date(dm H:i, filemtime($upload_dir.$file))
.</font></small></small></sub>;
$파일목록 .=<br>;
}
}
함수 do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['사용자파일']['이름'];
$file_name = str_replace( \\,,$file_name );
$file_name = str_replace(',,$file_name);
$file_path = $upload_dir.$file_name;
//파일명 확인
if ($file_name ==) {
$message = 잘못된 파일 이름이 지정되었습니다.
$메시지를 반환합니다.
}
$result = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path,0777))
$message = 777로의 권한 변경이 실패했습니다.;
또 다른
$message = ($result)?$file_name이(가) 성공적으로 업로드되었습니다.
파일 업로드에 문제가 있습니다.;
$메시지를 반환합니다.
}
?>
<가운데>
<글꼴 색상=빨간색><?=$_REQUEST[메시지]?></글꼴>
<br>
<양식 이름=업로드 ID=업로드 ENCTYPE=다중 부분/양식-데이터 방법=게시물>
파일 업로드 <입력 유형=파일 ID=사용자파일 이름=사용자파일>
<입력 유형=제출 이름=업로드 값=업로드>
</form>
<br><b>내 파일</b>
<시간폭=70%>
<?=$filelist?>
<시간폭=70%>
<소형><sup>개발자
<a 스타일=텍스트-장식:없음 href=http://tech.citypost.ca>CityPost.ca</a>
</sup></small>
</중앙>