第13章ファイルのアップロード


Demo1.php
<form enctype="multipart/form-data" action="Demo2.php" method="post">
	<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
	    : <input type="file" name="userfile" />
	<input type="submit" value="  " />
</form>

 
Demo2.php
<?php
	//      
	//$_FILES;
	//  ,    
	//[userfile][name]         
	//[userfile][type]       :  ,jpg       :image/jpeg
	//[userfile][tmp_name]               C:\WINDOWS\temp\php28.tmp
	//[userfile][error]      ,        。
	//[userfile][size]         
	print_r($_FILES);
	echo '<br/>';
	//is_uploaded_file --           HTTP POST    
	//   HTTP POST    ,            
	
	$fileMimes = array('image/jpeg','image/pjpeg','image/gif','image/png','image/x-png');
	//             
	if(is_array($fileMimes)){
		if(!in_array($_FILES['userfile']['type'],$fileMimes)){
			echo "<script>alert('      jpg,png,gif   ');history.back();</script>";
			exit;
		}
	}
	
	//      
	define('URL',dirname(__FILE__).'\uploads');
	echo URL;
	
	//        
	if(!is_dir(URL)){
		mkdir(URL,0777); //    0777,           ,     
	}
	
	
	define('MAX_SIZE',2000000);
	if($_FILES['userfile']['size'] > MAX_SIZE){
		echo "<script>alert('       2 M');history.back();</script>";
		exit;
	}
	
	//         
	
	//     ,    JPG   
//	if($_FILES['userfile']['type'] != 'image/jpeg' && $_FILES['userfile']['type'] != 'image/pjpeg'){
//		echo "<script>alert('      JPG   ');history.back();</script>";
//		exit ;
//	}

//	switch ($_FILES['userfile']['type']){
//		case 'image/jpeg'://  
//			break;
//		case 'image/pjpeg':
//			break;
//		case 'image/gif':
//			break;
//		case 'image/png'://  
//			break;
//		case 'image/x-png'://IE
//			break;
//		default:  echo "<script>alert('      jpg,png,gif   ');history.back();</script>";
//		exit ;
//	}
	
	//     ,      ,   
	if($_FILES['userfile']['error']>0){
		switch ($_FILES['userfile']['error']){
			case 1:echo "<script>alert('         1');history.back();</script>";
			break;
			case 2:echo "<script>alert('         2');history.back();</script>";
			break;
			case 3:echo "<script>alert('     ');history.back();</script>";
			break;
			case 4:echo "<script>alert('     ');history.back();</script>";
			break;
		}
		exit;
	}
	
	if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
		//       
		//move_uploaded_file --             
		//     ,         ,
		//     ,               
		//            
		//        ,     @
		if(!move_uploaded_file($_FILES['userfile']['tmp_name'],URL.'/'.$_FILES['userfile']['name'])){
			//      ,   
			echo '    ';
			exit;
		}
	}else{
		echo "<script>alert('             ');history.back();</script>";
		exit;
	}
	//          
	//       Demo3.php
	//       
	echo "<script>alert('      ');location.href='Demo3.php?url=".$_FILES['userfile']['name']."';</script>";
?>

 
Demo3.php
<?php
	$url = $_GET['url'];
	echo "<img src=\"uploads/".$url."\"/>";	
?>