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日期时间函数的高级应用技巧
May 16 PHP
php 代码优化之经典示例
Mar 24 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
ThinkPHP标签制作教程
Jul 10 PHP
laravel安装和配置教程
Oct 29 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
PHP中的表达式简述
May 29 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP实现的CURL非阻塞调用类
Jul 26 PHP
php的对象传值与引用传值代码实例讲解
Feb 26 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
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
JS与C#编码解码
2013/12/03 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
Bootstrap实现模态框效果
2019/09/30 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
详解Vite的新体验
2021/02/22 Javascript
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
工业设计专业推荐信
2013/10/29 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
事业单位岗位说明书
2015/10/08 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
高中班主任寄语
2019/06/21 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript