首页 > 语言 > PHP > 正文

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

2024-05-04 23:49:21
字体:
来源:转载
供稿:网友

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" > 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选