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"<fontcolor=red>已经成功上传</font><br>文件名:<fontcolor=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]) { case1: $simage=imagecreatefromgif($destination); break; case2: $simage=imagecreatefromjpeg($destination); break; case3: $simage=imagecreatefrompng($destination); break; case6: $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) { case1://加水印字符串 imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black); break; case2://加水印图片 $simage1=imagecreatefromgif("xplore.gif"); imagecopy($nimage,$simage1,0,0,0,0,85,15); imagedestroy($simage1); break; } switch($iinfo[2]) { case1: //imagegif($nimage,$destination); imagejpeg($nimage,$destination); break; case2: imagejpeg($nimage,$destination); break; case3: imagepng($nimage,$destination); break; case6: imagewbmp($nimage,$destination); //imagejpeg($nimage,$destination); break; } //覆盖原上传文件 imagedestroy($nimage); imagedestroy($simage); } if($imgpreview==1) { echo"<br>图片预览:<br>"; echo"<imgsrc=\"/wp-content/themes/HotNewspro/mytest/".$fname."\"width=".($image_size[0]*$imgpreviewsize)."height=".($image_size[1]*$imgpreviewsize); echo"alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">"; } } ?>
前台页面
<formenctype="multipart/form-data"method="post"name="upform" action="submit_form_process.php"> <inputname="testparas"value="test"type="text"> <inputname="upfile"type="file"> <inputtype="submit"value="上传"><br> 允许上传的文件类型为:<?=implode(',',$uptypes)?> </form>
注1:多图片上传跟单个图片上传的最大区别在于input中的name属性的,一开始我的name只等于upfile,在服务器端读取FILES时只能读到最后一个文件,因为在服务器端中FILES时只能读到最后一个文件,因为在服务器端中_FILES["file"]是我们上传的文件,当上传多个文件时,后面值的会覆盖前面的值,所以只能读到最后一个文件。现在我们把它改称upfile[],在服务器读取$_FILES["file"]时得到的便是一个数组,所以我就可以用上面遍历的数组的方法来获取上传文件的信息。
<inputtype="file"multiple="multiple"id="file"name="upfile[]">
注2:也可以在前台页面添加一个IFrame,使得form提交到此IFrame,后台服务回传内容显示到此处
<formenctype="multipart/form-data"method="post"name="upform"tatget="iframefile" action="submit_form_process.php"> <inputname="testparas"value="test"type="text"> <inputname="upfile"type="file"> <inputtype="submit"value="上传"><br> 允许上传的文件类型为:<?=implode(',',$uptypes)?> </form> <iframename="iframefile">
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。