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


Posted in PHP onAugust 24, 2016

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 " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">"; 
  } 
  
} 
?>

前台页面 

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php empty函数判断mysql表单是否为空
Apr 12 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
php构造函数实例讲解
Nov 13 PHP
php日历制作代码分享
Jan 20 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 PHP
PHP简单创建压缩图的方法
Aug 24 #PHP
php利用header函数下载各种文件
Aug 24 #PHP
php强制下载文件函数
Aug 24 #PHP
PHP简单实现数字分页功能示例
Aug 24 #PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 #PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 #PHP
PHP简单判断手机设备的方法
Aug 23 #PHP
You might like
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
为javascript添加String.Format方法
2020/08/11 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
js实现查询商品案例
2020/07/22 Javascript
python3图片转换二进制存入mysql
2013/12/06 Python
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
Pyqt5实现英文学习词典
2019/06/24 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
python实现简单文件读写函数
2021/02/25 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
大学生职业生涯规划书范文
2014/01/14 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript
Java数组详细介绍及相关工具类
2022/04/14 Java/Android