php文件上传

/*PHP处理上传的数据(用超全局数组获取表单等上传过来的数据POST,FILES):
* 		$_POST接收非文件上传的表单数据;
* 		如果是接收文件上传的数据就使用$_FILES处理。print_r ($_FILES);
* 
* 有文件上传操作的表单的提交方法method必须是HTTP POST
* 表单中:使用 <input type="file" name="pic[]">,达到选择文件上传的效果;name很重要
* 表单中:enctype="multipart/form-data"指定form编码的数据方式。让服务器知道,需要传一个文件并带有常规的表单信息,如果不加这个属性,FILES接收不到上传的file数据
* action :

单个文件上传:二维数组
*Array
(
    [pic] => Array
        (
            [name] => anobii-large_blue.png     这是上传的文件的名
            [type] => image/png                 上传的文件的MIME类型
            [tmp_name] => E:\tmpImg\phpE14F.tmp  上传后,系统自动拷贝到设置的     临时文件路径\临时文件名   。当这个脚本结束之前,一定要将它拷贝出来,存储到另一个路径下,否则它会消失。
            [error] => 0			
            [size] => 5390         上传文件大小(字节)
        )

)
//*step1:使用$_FILES['pic']['error']检查错误
  if($_FILES['pic']['error']>0){
	switch($_FILES['pic']['error']){
		case 1:
			echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
			break;
		case 2:
			echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 ";
			break;
		case 3:
			echo "文件只有部分被上传。 ";
			break;
		case 4:
			echo "没有文件被上传。 ";
			break;
		default:
			echo"上传的文件有未知的错误";
	}
	exit();
	
	
//step2:使用$_FILES['pic']['size']限制大小 单位字节  2M=2000000
 * $maxsize=50000;//50K
	if($_FILES['pic']['size'] > $maxsize){
		echo "上传的文件太大,不能超过{$maxsize}字节";
		exit();
	}
	echo "文件正常";
	copy($_FILES["pic"]["tmp_name"][0],'./upload/aaa.gif');
	
	
//step3:使用$_FILES['pic']['type']或是文件的扩展名     限制文件的类型
 * list($dl,$xl)=explore("/",$_FILES["pic"]["type"]);//分割Mime
	if($dl!="image"){
		echo "请上传图片不允许其他类型";
	}
	echo "上传正常";

	$allowImageType=array("png","gif","jpg","jpeg");
	$arr=explode(".",$_FILES['pic']['name']);//取得文件名,输出后缀
	$hz=$arr[count($arr)-1];
	echo $hz;
	if(!in_array($hz,$allowImageType)){
		echo "这是不符合的图片后缀";
		exit;
	}
	
//step4:为了安全,将上传后的文件名改名,$_FILES['pic']['name']。因为别人能猜到你上传的目录是哪,
	例如:一个人上传了一个PHP文件(系统),他可能猜到上传到的目录是当前路径下的upload目录;这样他就可能去访问这个目录
	$filepath="./uploads/";
	//年月日时分秒.长度一致的随机文件名
	$randname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100.999).".".$hz;
	
	if(is_uploaded_file($_FILES['pic']['tmp_name'])){
		//if(move_uploaded_file($_FILES['pic']['tmp_name'],"./uploads/".$_FILES['pic']['name'])){
		 * if(move_uploaded_file($_FILES['pic']['tmp_name'],$filepath.$rnadname)){
			echo "上传成共";
		}else{
			echo "上传失败";
		}
	}
	else{
		echo "不是一个上传图片";
	}
	
多个文件上传:三维数组
Array
(
    [pic] => Array
        (
            [name] => Array
                (
                    [0] => anobii-large_blue.png
                    [1] => anobii-large_grey.png
                    [2] => anobii-small_blue.png
                    [3] => anobii-small_grey.png
                )

            [type] => Array
                (
                    [0] => image/png
                    [1] => image/png
                    [2] => image/png
                    [3] => image/png
                )

            [tmp_name] => Array
                (
                    [0] => E:\tmpImg\phpF60.tmp
                    [1] => E:\tmpImg\phpF61.tmp
                    [2] => E:\tmpImg\phpF62.tmp
                    [3] => E:\tmpImg\phpF63.tmp
                )

            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                    [3] => 0
                )

            [size] => Array
                (
                    [0] => 5390
                    [1] => 4687
                    [2] => 3440
                    [3] => 2934
                )

        )

)
*/

单个文件上传:<input type="file" name="pic">

4个文件同时上传:<input type="file" name="pic[]">

                           <input type="file" name="pic[]">

                           <input type="file" name="pic[]">

                           <input type="file" name="pic[]">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值