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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
php 操作excel文件的方法小结
Dec 31 PHP
基于MySQL体系结构的分析
May 02 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
PHP数组常用函数实例小结
Aug 20 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
设定php简写功能的方法
Nov 28 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中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
理解JS事件循环
2016/01/07 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
Node.js学习入门
2017/01/03 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
详解Vue2 添加对scss的支持
2019/01/02 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
js实现简单点赞操作
2020/03/17 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
Python中字符串的格式化方法小结
2016/05/03 Python
Python队列的定义与使用方法示例
2017/06/24 Python
python实现两个文件合并功能
2018/04/01 Python
对Python3 序列解包详解
2019/02/16 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python 实现单例模式的5种方法
2020/09/23 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
采购内勤岗位职责
2013/12/10 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
PHP解决高并发问题
2021/04/01 PHP
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis