php 单文件上传、多文件上传的简单示例

前端之家收集整理的这篇文章主要介绍了php 单文件上传、多文件上传的简单示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
感兴趣PHP文件上传、多文件上传的简单示例的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧。<br>

PHP处理  单文件、多文件上传实例代码,供大家参考,具体内容如下 

后台处理文件submit_form_process.PHP

  1. /******************************************************************************
  2. * @param
  3. * @author 编程之家 jb51.cc jb51.cc
  4. 参数说明:
  5. $max_file_size : 上传文件大小限制,单位BYTE
  6. $destination_folder : 上传文件路径
  7. $watermark : 是否附加水印(1为加水印,其他为不加水印);
  8. 使用说明:
  9. 1. 将PHP.INI文件里面的"extension=PHP_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
  10. 2. 将extension_dir =改为你的PHP_gd2.dll所在目录;
  11. ******************************************************************************/
  12. //上传文件类型列表
  13. $uptypes=array(
  14. 'image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'
  15. );
  16. $max_file_size=2*1024*1024; //上传文件大小限制,单位BYTE
  17. $destination_folder=get_stylesheet_directory().'/mytest/'; //上传文件路径
  18. $watermark=1; //是否附加水印(1为加水印,其他为不加水印);
  19. $watertype=1; //水印类型(1为文字,2为图片)
  20. $waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
  21. $waterstring="test"; //水印字符串
  22. $waterimg="xplore.gif"; //水印图片
  23. $imgpreview=1; //是否生成预览图(1为生成,其他为不生成);
  24. $imgpreviewsize=1/2; //缩略图比例
  25. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  26. {
  27. $fileArray = $_FILES['upfile'];//获取多个文件的信息,注意:这里的键名不包含[]
  28. print_r($fileArray);
  29. echo "<br/>";
  30. if (!is_uploaded_file($_FILES["upfile"]['tmp_name']))
  31. //是否存在文件
  32. {
  33. echo "图片不存在!";
  34. exit;
  35. }
  36. $file = $_FILES["upfile"];
  37. if($max_file_size < $file["size"])
  38. //检查文件大小
  39. {
  40. echo "文件太大!";
  41. exit;
  42. }
  43. if(!in_array($file["type"],$uptypes))
  44. //检查文件类型
  45. {
  46. echo "文件类型不符!".$file["type"];
  47. exit;
  48. }
  49. if(!file_exists($destination_folder))
  50. {
  51. mkdir($destination_folder);
  52. }
  53. $filename=$file["tmp_name"];
  54. $image_size = getimagesize($filename);
  55. $pinfo=pathinfo($file["name"]);
  56. $ftype=$pinfo['extension'];
  57. $destination = $destination_folder.time().".".$ftype;
  58. //$destination = $destination_folder.$file["name"];
  59. if (file_exists($destination) && $overwrite != true)
  60. {
  61. echo "同名文件已经存在了";
  62. exit;
  63. }
  64. if(!move_uploaded_file ($filename,$destination))
  65. {
  66. echo "移动文件出错";
  67. exit;
  68. }
  69. $pinfo=pathinfo($destination);
  70. $fname=$pinfo[basename];
  71. echo " <font color=red>已经成功上传</font><br>文件名: <font color=blue>".$destination_folder.$fname."</font><br>";
  72. echo " 宽度:".$image_size[0];
  73. echo " 长度:".$image_size[1];
  74. echo "<br> 大小:".$file["size"]." bytes";
  75. if($watermark==1)
  76. {
  77. $iinfo=getimagesize($destination,$iinfo);
  78. $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
  79. $white=imagecolorallocate($nimage,255,255);
  80. $black=imagecolorallocate($nimage,0);
  81. $red=imagecolorallocate($nimage,0);
  82. imagefill($nimage,$white);
  83. switch ($iinfo[2])
  84. {
  85. case 1:
  86. $simage =imagecreatefromgif($destination);
  87. break;
  88. case 2:
  89. $simage =imagecreatefromjpeg($destination);
  90. break;
  91. case 3:
  92. $simage =imagecreatefrompng($destination);
  93. break;
  94. case 6:
  95. $simage =imagecreatefromwbmp($destination);
  96. break;
  97. default:
  98. die("不支持文件类型");
  99. exit;
  100. }
  101. imagecopy($nimage,$simage,$image_size[0],$image_size[1]);
  102. imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);
  103. switch($watertype)
  104. {
  105. case 1: //加水印字符串
  106. imagestring($nimage,2,3,$waterstring,$black);
  107. break;
  108. case 2: //加水印图片
  109. $simage1 =imagecreatefromgif("xplore.gif");
  110. imagecopy($nimage,$simage1,85,15);
  111. imagedestroy($simage1);
  112. break;
  113. }
  114. switch ($iinfo[2])
  115. {
  116. case 1:
  117. //imagegif($nimage,$destination);
  118. imagejpeg($nimage,$destination);
  119. break;
  120. case 2:
  121. imagejpeg($nimage,$destination);
  122. break;
  123. case 3:
  124. imagepng($nimage,$destination);
  125. break;
  126. case 6:
  127. imagewbmp($nimage,$destination);
  128. //imagejpeg($nimage,$destination);
  129. break;
  130. }
  131. //覆盖原上传文件
  132. imagedestroy($nimage);
  133. imagedestroy($simage);
  134. }
  135. if($imgpreview==1)
  136. {
  137. echo "<br>图片预览:<br>";
  138. echo "<img src=\"/wp-content/themes/HotNewspro/mytest/".$fname."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
  139. echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
  140. }
  141. }
前台页面
  1. <form enctype="multipart/form-data" method="post" name="upform"
  2. action="submit_form_process.PHP">
  3. <input name="testparas" value="test" type="text">
  4. <input name="upfile" type="file" >
  5. <input type="submit" value="上传"><br>
  6. 允许上传文件类型为:<?=implode(',',$uptypes)?>
  7. </form>

注1:多图片上传跟单个图片上传的最大区别在于input中的name属性的,一开始我的name只等于upfile,在服务器端读取 F ILES时只能读到最后一个文件,因为在服务器端中 FILES时只能读到最后一个文件,因为在服务器端中_FILES["file"]是我们上传文件,当上传多个文件时,后面值的会覆盖前面的值,所以只能读到最后一个文件。现在我们把它改称upfile[],在服务器读取$_FILES["file"]时得到的便是一个数组,所以我就可以用上面遍历的数组的方法获取上传文件的信息。 
  1. <input type="file" multiple="multiple" id="file" name="upfile[]">  
注2:也可以在前台页面添加一个IFrame,使得form提交到此IFrame,后台服务回传内容显示到此处 
  1. <form enctype="multipart/form-data" method="post" name="upform" tatget="iframefile"
  2. action="submit_form_process.PHP">
  3. <input name="testparas" value="test" type="text">
  4. <input name="upfile" type="file" >
  5. <input type="submit" value="上传"><br>
  6. 允许上传文件类型为:<?=implode(',$uptypes)?>
  7. </form>
  8. <iframe name="iframefile" >
 

猜你在找的PHP相关文章