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 相关文章推荐
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
PHP可逆加密/解密函数分享
Sep 25 PHP
php 在windows下配置虚拟目录的方法介绍
Jun 26 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
Yii2实现ActiveForm ajax提交
May 26 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
php微信开发之关注事件
Jun 14 PHP
safari下载文件自动加了html后缀问题
Nov 09 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查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
pytorch打印网络结构的实例
2019/08/19 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
python爬虫---requests库的用法详解
2020/09/28 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
组织鉴定材料
2014/06/02 职场文书
英语系本科生求职信
2014/07/15 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
Python编写冷笑话生成器
2022/04/20 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript