为了简单一些,php文件跟form表单写在了一个文件里.
php单文件上传---->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
请选择要上传的文件:<input type="file" name="myfile"/><br /><br />
<input type="submit" value="submit" />
<input type="hidden" name="MAX_FILE_SIZE" value="5982"/>
</form>
</body>
</html> <?php
if(!empty($_FILES)){
header('content-type:text/html;charset=utf-8');
$fileInfo=$_FILES['myfile'];
print_r($_FILES);
//如果上传出错则退出并打印错误信息
if($fileInfo['error']>0){
switch($fileInfo['error']){
case 1:
$msg_error='上传文件超过了php配置文件中UPLOAD_MAX_FILESIZE选项的值';
break;
case 2:
$msg_error='超过了表单MAX_FILE_SIZE限制的大小';
break;
case 3:
$msg_error='文件部分上传';
break;
case 4:
$msg_error='没有文件上传';
break;
case 6:
$msg_error='没有找到临时目录';
break;
case 7:
case 8:
$msg_error='系统错误';
break;
}
exit($msg_error);
}
$filename=$fileInfo['name'];
//获取文件的扩展名
$ext=strtolower(substr($filename,strrpos($filename,'.')+1));
//定义可允许上传的扩展名
$allowExt=array('txt','html','png','gif','jpeg');
//检测上传文件的类型
if(!in_array($ext,$allowExt)){
exit('上传文件类型错误');
} //检测文件的大小
$maxSize=2097152;
if($fileInfo['size']>$maxSize){
exit('上传文件过大');
} //检测是否为HTTP POST方式上传上来的
if(!is_uploaded_file($fileInfo['tmp_name'])){
exit('文件不是通过HTTP POST方式提交上来的');
} //确保文件名字唯一,防止同名文件被覆盖
$uniqName=md5(uniqid(microtime(true),true)).'.'.$ext; //定义保存在哪个文件夹下,如果没有该文件夹则创建
$path='uploads';
if(!file_exists($path)){
mkdir($path,0777,true);
chmod($path,0777);
}
$destination=$path.'/'.$uniqName; //移动文件至要保存的目录
if(! @move_uploaded_file($fileInfo['tmp_name'],$destination)){
exit('文件上传失败');
} echo '上传成功'; }
?>