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

    php.ini中和和文件上传相关的选项

    指令名 默认值 描述
    file_uploads ON 服务器上的php脚本是否可以接受文件上传
    max_execution_time 30 PHP脚本在注册一个致命错误之前可以执行的最长时间,以秒为单位
    memory_limit 128MB 设置PHP脚本可以分配到的最大内存,以MB为单位,这样可以防止失控的脚本独占服务器内存
    upload_max_filesize 2MB 设置上传文件的大小的最大值,以MB为单位。此指令必须小于post_max_size
    upload_tmp_dir NULL 设置文件上传后存放的临时目录
    post_max_size 8M 通过POST方式发送信息的大小,以MB为单位

    用来上传文件的php脚本

    <form enctype="multipart/form-data" action="upload.php" method="post">
    	<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
    	上传文件:<input type="file" name="userfile" />
    	<input type="submit" value="上传" />
    </form>
    

     POST方式发送文件到upload.php进行处理

    选择本地的一个shell.jpg文件

    upload.php中的内容

    <?php 
    
    	//打印文件信息的数组
    	print_r($_FILES);
    
    ?>
    

     点击上传

    全局数组$_FILES中的元素说明

    数组 描述
    $_FILES['userfile']['name'] 上传的文件的文件名
    $_FILES['userfile']['type'] 上传的文件的文件类型
    $_FILES['userfile']['tmp_name'] 上传的文件临时存放地址
    $_FILES['userfile']['error'] 上传的文件的错误类型
    $_FILES['userfile']['size'] 上传的文件的大小

    对上传的文件进行过滤和处理

    <?php 
    
    	//允许上传的文件类型
    	$allow_type = ['image/jpeg', 'image/png', 'image/pjpeg', 'image/x-png', 'image/gif'];
    	//判断上传的类型是否被允许
    	if (!in_array($_FILES['userfile']['type'], $allow_type)){
    		echo "<script>alert('只允许上传jpg/png/gif类型的图片')</script>";
    		exit;
    	}
    
    
    	//判断上传过程中是否发生错误
    	if ($_FILES['userfile']['error'] != 0){
    		switch ($_FILES['userfile']['error']) {
    			case 1:
    			echo "<script>alert('上传文件的大小超过了php.ini中upload_max_filesize的约定值')</script>";
    			break;
    		case 2:
    			echo "<script>alert('上传文件的大小超过了上传表单max_file_size规定的最大值')</script>";
    			break;
    		case 3:
    			echo "<script>alert('文件只被部分上传')</script>";
    			break;
    		case 4:
    			echo "<script>alert('文件没有被上传')</script>";
    			break;
    		}
    		exit;
    	}
    
    
    	//用来再次判断上传文件的大小
    	define('MAX_SIZE', 2000000);
    	if ($_FILES['userfile']['size'] > MAX_SIZE){
    		echo "<script>alert('上传的文件大小不能超过2M')</script>";
    		exit;
    	}
    
    
    	//判断目录是否存在
    	define('URL', dirname(__FILE__).'files');
    	if (!is_dir(URL)) {
    		mkdir(URL);
    	}
    
    	//把文件从临时文件夹移动到指定文件夹
    	if (is_uploaded_file($_FILES['userfile']['tmp_name'])){
    		if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], URL.'/'.$_FILES['userfile']['name'])){
    			echo "<script>alert('移动失败');history.back();</script>";
    			exit;
    		}
    	}else {
    		echo "<script>alert('临时文件夹找不到文件');history.back();</script>";
    		exit;
    	}
    
    
    	//经过以上过滤,符合条件的文件上传成功,执行以下语句
    	echo "<script>alert('文件上传成功');location.href='url.php?url=files/".$_FILES['userfile']['name']."'".";</script>";
    
    ?>
    

     上传文件

    然后跳转到http://127.0.0.1/upload/url.php?url=files/shell.jpg

  • 相关阅读:
    OneNote2007产品密钥及激活方法
    穿着马甲的编码方式链式
    String 转换NameValueCollection 的方法 , 这是原创 嘎嘎
    TransactionScope分布式事务无法使用时, 配置并启动 MSDTC 的解决方案
    Spirit越狱3.1.3/3.2固件(Windows)
    智能感知 不正常的解决方法
    HttpHandler HttpModule入门篇
    Microsoft.Practices.Unity依赖注入使用实例
    ViewEngine 深入解析与应用实例
    打开chm文件提示“已取消到该网页的导航”的解决方案
  • 原文地址:https://www.cnblogs.com/sch01ar/p/8592013.html
Copyright © 2011-2022 走看看