php处理单文件、多文件上传代码分享

php处理  单文件、多文件上传实例代码,供大家参考,具体内容如下

后台处理文件submit_form_process.php

  <?php   /******************************************************************************      参数说明:   $max_file_size : 上传文件大小限制, 单位BYTE   $destination_folder : 上传文件路径   $watermark  : 是否附加水印(1为加水印,其他为不加水印);      使用说明:   1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;   2. 将extension_dir =改为你的php_gd2.dll所在目录;   ******************************************************************************/   //上传文件类型列表  $uptypes=array(      'image/jpg',      'image/jpeg',      'image/png',      'image/pjpeg',      'image/gif',      'image/bmp',      'image/x-png'  );     $max_file_size=2*1024*1024;   //上传文件大小限制, 单位BYTE   $destination_folder=get_stylesheet_directory().'/mytest/'; //上传文件路径   $watermark=1;   //是否附加水印(1为加水印,其他为不加水印);   $watertype=1;   //水印类型(1为文字,2为图片)   $waterposition=1;   //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);   $waterstring="test"; //水印字符串   $waterimg="xplore.gif";  //水印图片   $imgpreview=1;   //是否生成预览图(1为生成,其他为不生成);   $imgpreviewsize=1/2;  //缩略图比例         if ($_SERVER['REQUEST_METHOD'] == 'POST')   {     $fileArray = $_FILES['upfile'];//获取多个文件的信息,注意:这里的键名不包含[]    print_r($fileArray);    echo "<br/>";    if (!is_uploaded_file($_FILES["upfile"]['tmp_name']))     //是否存在文件     {        echo "图片不存在!";        exit;     }       $file = $_FILES["upfile"];     if($max_file_size < $file["size"])     //检查文件大小     {       echo "文件太大!";       exit;     }        if(!in_array($file["type"], $uptypes))     //检查文件类型     {       echo "文件类型不符!".$file["type"];       exit;     }        if(!file_exists($destination_folder))     {       mkdir($destination_folder);     }     $filename=$file["tmp_name"];     $image_size = getimagesize($filename);     $pinfo=pathinfo($file["name"]);     $ftype=$pinfo['extension'];     $destination = $destination_folder.time().".".$ftype;     //$destination = $destination_folder.$file["name"];     if (file_exists($destination) && $overwrite != true)     {       echo "同名文件已经存在了";       exit;     }     if(!move_uploaded_file ($filename, $destination))     {       echo "移动文件出错";       exit;     }           $pinfo=pathinfo($destination);     $fname=$pinfo[basename];     echo " <font color=red>已经成功上传</font><br>文件名: <font color=blue>".$destination_folder.$fname."</font><br>";     echo " 宽度:".$image_size[0];     echo " 长度:".$image_size[1];     echo "<br> 大小:".$file["size"]." bytes";            if($watermark==1)     {       $iinfo=getimagesize($destination,$iinfo);       $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);       $white=imagecolorallocate($nimage,255,255,255);       $black=imagecolorallocate($nimage,0,0,0);       $red=imagecolorallocate($nimage,255,0,0);       imagefill($nimage,0,0,$white);       switch ($iinfo[2])       {         case 1:         $simage =imagecreatefromgif($destination);         break;         case 2:         $simage =imagecreatefromjpeg($destination);         break;         case 3:         $simage =imagecreatefrompng($destination);         break;         case 6:         $simage =imagecreatefromwbmp($destination);         break;         default:         die("不支持的文件类型");         exit;       }          imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);       imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);          switch($watertype)       {         case 1:  //加水印字符串         imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);         break;         case 2:  //加水印图片         $simage1 =imagecreatefromgif("xplore.gif");         imagecopy($nimage,$simage1,0,0,0,0,85,15);         imagedestroy($simage1);         break;       }          switch ($iinfo[2])       {         case 1:         //imagegif($nimage, $destination);         imagejpeg($nimage, $destination);         break;         case 2:         imagejpeg($nimage, $destination);         break;         case 3:         imagepng($nimage, $destination);         break;         case 6:         imagewbmp($nimage, $destination);         //imagejpeg($nimage, $destination);         break;       }          //覆盖原上传文件       imagedestroy($nimage);       imagedestroy($simage);     }        if($imgpreview==1)     {     echo "<br>图片预览:<br>";     echo "<img src="/wp-content/themes/HotNewspro/mytest/".$fname."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);     echo "  }       }   ?>

前台页面

     <form enctype="multipart/form-data" method="post" name="upform"      action="submit_form_process.php">       <input name="testparas" value="test" type="text">       <input name="upfile" type="file" >        <input type="submit" value="上传"><br>        允许上传的文件类型为:<?=implode(', ',$uptypes)?>       </form>

注1:多图片上传跟单个图片上传的最大区别在于input中的name属性的,一开始我的name只等于upfile,在服务器端读取 F ILES时只能读到最后一个文件,因为在服务器端中 FILES时只能读到最后一个文件,因为在服务器端中_FILES[“file”]是我们上传的文件,当上传多个文件时,后面值的会覆盖前面的值,所以只能读到最后一个文件。现在我们把它改称upfile[],在服务器读取$_FILES[“file”]时得到的便是一个数组,所以我就可以用上面遍历的数组的方法来获取上传文件的信息。
<input type=”file” multiple=”multiple” id=”file” name=”upfile[]”> 

注2:也可以在前台页面添加一个IFrame,使得form提交到此IFrame,后台服务回传内容显示到此处

    <form enctype="multipart/form-data" method="post" name="upform" tatget="iframefile"      action="submit_form_process.php">       <input name="testparas" value="test" type="text">       <input name="upfile" type="file" >        <input type="submit" value="上传"><br>        允许上传的文件类型为:<?=implode(', ',$uptypes)?>       </form>        <iframe name="iframefile" >
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论