zoukankan      html  css  js  c++  java
  • PHP上传文件

    直接附上代码吧!

     先看上传单个文件

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<title>上传文件</title>
    </head>
    <body>
    	<!-- 上传文件必须将method改为post,并且加enctype="multipart/form-data" -->
    	<form action="" method="post" enctype="multipart/form-data">
    		<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
    		<input type="file" name="file">
    		<input type="submit" name="submit" value="upload">
    	</form>
    	<br><br><br><br>
    </body>
    </html>
    
    <?php 
    	if(isset($_POST['submit'])){
    		$flag=true;
    		//验证文件大小
    		if($_FILES['file']['size']>$_POST['MAX_FILE_SIZE']){
    			echo "文件".$_FILES['file']['name']."的大小超出范围<br>";
    			$flag=false;
    			continue;
    		} else {
    			echo "文件".$_FILES['file']['name']."的符合大小要求<br>";
    		}
    		echo $_FILES['file']['type'];
    		//验证文件格式
    		$new_name="./upload/";//上传文件的根目录
    		switch($_FILES['file']['type']){
    			case "image/png":
    			case "image/gif":
    			case "image/jpeg":
    			case "image/x-png":
    				echo "上传的文件类型为图片<br>";
    				$new_name.="pic/";
    				break;
    			case "text/txt":
    			case "text/plain":
    			case "text/html":
    				echo "上传的文件类型为文本<br>";
    				$new_name.="text/";
    				break;
    			case "audio/basic":
    			case "audio/x-m4a":
    				echo "上传的文件类型为音频<br>";
    				$new_name.="audio/";
    				break;
    			case "video/mpeg":
    				echo "上传的文件类型为音频<br>";
    				$new_name.="video/";
    				break;
    			case "application/zip":
    			case "application/x-tar":
    			case "application/x-gz":
    				$new_name.="rar/";
    				echo "上传的文件类型为压缩文件<br>";
    				break;
    			case "application/msword":
    			case "application/powerpoint":
    			case "application/vnd.ms-excel":
    				$new_name.="office/";
    				echo "上传的文件类型为office办公文档<br>";
    				break;
    			case "application/x-msdownload":
    				$new_name.="software/";
    				echo "上传的文件类型是可执行文件<br>";
    				break;
    			default:
    				echo "文件类型不合格<br>";
    				$flag=false;
    				break;
    
    		}
    
    		//上传的文件名,可采用原文件名,也可采用时间加随机数作文件名
    		// $new_name.=$_FILES['file']['name'][$i];
    		$tmp_name=$_FILES['file']['name'];
    		$arr=explode(".",$tmp_name);
    		$extension=array_pop($arr);
    		//一定要注意采集文件后缀名时,有这种类型abc.1.5.exe,即有版本号的情况
    		$new_name.=date("YmdHis").rand(0,99).".".$extension;
    		if($flag&&move_uploaded_file($_FILES['file']['tmp_name'],$new_name)){
    			echo "上传成功<br><br><br><br>";
    		} else {
    			echo "上传失败<br><br><br><br>";
    		}
    	}
     ?>
    

      

    再看上传多个文件

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<title>上传文件</title>
    </head>
    <body>
    	<!-- 上传文件必须将method改为post,并且加enctype="multipart/form-data" -->
    	<form action="" method="post" enctype="multipart/form-data">
    		<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
    		<input type="file" name="file[]"><br>
    		<input type="file" name="file[]"><br>
    		<input type="file" name="file[]"><br>
    		<input type="file" name="file[]"><br><br>
    		<input type="submit" name="submit" value="upload"><br>
    	</form>
    	<br><br><br><br>
    </body>
    </html>
    
    
    <?php 
    	if(isset($_POST['submit'])){
    		//获取上传的文件数
    		$total_file_nums=count($_FILES['file']['name']);
    		for($i=0;$i<$total_file_nums;$i++){
    			$flag=true;
    			//验证文件大小
    			if($_FILES['file']['size'][$i]>$_POST['MAX_FILE_SIZE']){
    				echo "文件".$_FILES['file']['name'][$i]."的大小超出范围<br>";
    				$flag=false;
    				continue;
    			} else {
    				echo "文件".$_FILES['file']['name'][$i]."的符合大小要求<br>";
    			}
    			echo $_FILES['file']['type'][$i];
    			//验证文件格式
    			$new_name="./upload/";//上传文件的根目录
    			switch($_FILES['file']['type'][$i]){
    				case "image/png":
    				case "image/gif":
    				case "image/jpeg":
    				case "image/x-png":
    					echo "上传的文件类型为图片<br>";
    					$new_name.="pic/";
    					break;
    				case "text/txt":
    				case "text/plain":
    				case "text/html":
    					echo "上传的文件类型为文本<br>";
    					$new_name.="text/";
    					break;
    				case "audio/basic":
    				case "audio/x-m4a":
    					echo "上传的文件类型为音频<br>";
    					$new_name.="audio/";
    					break;
    				case "video/mpeg":
    					echo "上传的文件类型为音频<br>";
    					$new_name.="video/";
    					break;
    				case "application/zip":
    				case "application/x-tar":
    				case "application/x-gz":
    					$new_name.="rar/";
    					echo "上传的文件类型为压缩文件<br>";
    					break;
    				case "application/msword":
    				case "application/powerpoint":
    				case "application/vnd.ms-excel":
    					$new_name.="office/";
    					echo "上传的文件类型为office办公文档<br>";
    					break;
    				case "application/x-msdownload":
    					$new_name.="software/";
    					echo "上传的文件类型是可执行文件<br>";
    					break;
    				default:
    					echo "文件类型不合格<br>";
    					$flag=false;
    					break;
    
    			}
    
    			//上传的文件名,可采用原文件名,也可采用时间加随机数作文件名
    			// $new_name.=$_FILES['file']['name'][$i];
    			$tmp_name=$_FILES['file']['name'][$i];
    			$arr=explode(".",$tmp_name);
    			$extension=array_pop($arr);
    			//一定要注意采集文件后缀名时,有这种类型abc.1.5.exe,即有版本号的情况
    			$new_name.=date("YmdHis").rand(0,99).".".$extension;
    			if($flag&&move_uploaded_file($_FILES['file']['tmp_name'][$i],$new_name)){
    				echo "上传成功<br><br><br><br>";
    			} else {
    				echo "上传失败<br><br><br><br>";
    			}
    		}
    	}
    
     ?>
    

      

     其实这个代码上传多个文件有很多bug,比如只上传一个,或者个数不确定,都不好用

  • 相关阅读:
    自己常用网站记录
    css弹性布局指定显示行数多余文字去掉用省略号代替以及弹性布局中css 卡片阴影效果
    微信小程序页面传参被截取问题
    阴影效果 css3 为什么要加 -moz-box-shadow -webkit-box-shadow -o-box-shadow,直接用box-shadow不是都能识别吗?
    css常用清除浮动方式
    什么是微信小程序云开发 它的作用是什么
    JMeter压测“java.net.SocketException: Socket closed”解决方法
    Jmeter压力测试工具安装及使用教程
    OnActionExecuting和OnActionExecuted执行顺序
    C#循环下载多个文件(把多个文件压缩成一个文件可以一次性下载)
  • 原文地址:https://www.cnblogs.com/-beyond/p/7206874.html
Copyright © 2011-2022 走看看