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 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
3.从实例开始
Oct 09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
实用函数4
Nov 08 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 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
php简单提示框alert封装函数
2010/08/08 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
jQuery ready函数滥用分析
2011/02/16 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
python3生成随机数实例
2014/10/20 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
python向图片里添加文字
2019/11/26 Python
python识别验证码图片实例详解
2020/02/17 Python
Python中的全局变量如何理解
2020/06/04 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
Python如何合并多个字典或映射
2020/07/24 Python
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
公司司机岗位职责范本
2014/03/03 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
九年级英语教学反思
2016/02/15 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
Python合并pdf文件的工具
2021/07/01 Python
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android