PHP 实现图片上传的代码(带返回值)

前端之家收集整理的这篇文章主要介绍了PHP 实现图片上传的代码(带返回值)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
功能上传图片,并自动关闭自己,把图片的地址返回给上一级表单
  1. <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <?PHP
  3. /******************************************************************************
  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=2000000; //上传文件大小限制,单位BYTE
  17. $destination_folder ="../uploadimg/"; //上传文件路径
  18. $watermark=1; //是否附加水印(1为加水印,其他为不加水印);
  19. $watertype=1; //水印类型(1为文字,2为图片)
  20. $waterposition = 2; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
  21. $waterstring = "http://WWW.512pic.COM"; //水印字符串
  22. $waterimg="xplore.gif"; //水印图片
  23. $imgpreview=1; //是否生成预览图(1为生成,其他为不生成);
  24. $imgpreviewsize=1; //缩略图比例 1/2
  25. $destination_folder =$destination_folder .date('Y',time())."/";
  26. if(!file_exists($destination_folder)) //检查年份文件是否存在,不存在则创建
  27. {
  28. //检查是否有该文件夹,如果没有就创建,并给予最高权限
  29. mkdir("$destination_folder",0700);
  30. }//END IF
  31. $destination_folder =$destination_folder .date('md',0700);
  32. }//END IF
  33. ?>
  34. <html>
  35. <head>
  36. <title>图片上传程序</title>
  37. <style type="text/css">
  38. <!--
  39. body
  40. {
  41. font-size: 9pt;
  42. }
  43. input
  44. {
  45. background-color: #66CCFF;
  46. border: 1px inset #CCCCCC;
  47. }
  48. -->
  49. </style>
  50. </head>
  51. <body>
  52. <form enctype="multipart/form-data" method="post" name="upform">
  53. 上传文件:
  54. <input name="upfile" type="file">
  55. <input type="submit" value="上传"><br>
  56. 允许上传文件类型为:<?=implode(',',$uptypes)?>
  57. </form>
  58. <?PHP
  59. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  60. {
  61. if (!is_uploaded_file($_FILES["upfile"]["tmp_name"]))
  62. //是否存在文件
  63. {
  64. echo "图片不存在!";
  65. exit;
  66. }
  67. $file = $_FILES["upfile"];
  68. if($max_file_size < $file["size"])
  69. //检查文件大小
  70. {
  71. echo "文件太大!";
  72. exit;
  73. }
  74. if(!in_array($file["type"],$uptypes))
  75. //检查文件类型
  76. {
  77. echo "文件类型不符!".$file["type"];
  78. exit;
  79. }
  80. if(!file_exists($destination_folder))
  81. {
  82. mkdir($destination_folder);
  83. }
  84. $filename = $file["tmp_name"]; //文件
  85. $image_size = getimagesize($filename); //文件大小
  86. $pinfo = pathinfo($file["name"]);
  87. $ftype = $pinfo['extension']; //文件类型
  88. date_default_timezone_set('PRC');
  89. $fnameurl = date("YmdHis").rand(100000,999999);//文件名 年月日时分秒+6位随机
  90. $destination = $destination_folder.$fnameurl.".".$ftype; //文件路径
  91. if (file_exists($destination) && $overwrite != true)
  92. {
  93. echo "同名文件已经存在了";
  94. exit;
  95. }
  96. if(!move_uploaded_file ($filename,$destination))
  97. {
  98. echo "移动文件出错";
  99. exit;
  100. }
  101. $pinfo = pathinfo($destination);
  102. $fname = $pinfo["basename"];
  103. echo " <font color=red>已经成功上传</font><br>文件名: <font color=blue>".$destination_folder.$fname."</font><br>";
  104. echo " 宽度:".$image_size[0];
  105. echo " 长度:".$image_size[1];
  106. echo "<br> 大小:".$file["size"]." bytes";
  107. if($watermark==1)
  108. {
  109. $iinfo=getimagesize($destination,$iinfo);
  110. $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
  111. $white =imagecolorallocate($nimage,255,255);
  112. $black = imagecolorallocate($nimage,0);
  113. $red =imagecolorallocate($nimage,0);
  114. imagefill($nimage,$white);
  115. switch ($iinfo[2])
  116. {
  117. case 1:
  118. $simage =imagecreatefromgif($destination);
  119. break;
  120. case 2:
  121. $simage =imagecreatefromjpeg($destination);
  122. break;
  123. case 3:
  124. $simage =imagecreatefrompng($destination);
  125. break;
  126. case 6:
  127. $simage =imagecreatefromwbmp($destination);
  128. break;
  129. default:
  130. die("不支持文件类型");
  131. exit;
  132. }
  133. imagecopy($nimage,$simage,$image_size[0],$image_size[1]);
  134. imagefilledrectangle($nimage,1,$image_size[1]-15,125,$image_size[1],$black );
  135. switch($watertype)
  136. {
  137. case 1: //加水印字符串
  138. imagestring($nimage,2,3,$waterstring,$red); //图象地址,使用内置字体,X坐标,Y坐标,字符串,颜色
  139. break;
  140. case 2: //加水印图片
  141. $simage1 =imagecreatefromgif("xplore.gif");
  142. imagecopy($nimage,$simage1,85,15);
  143. imagedestroy($simage1);
  144. break;
  145. }
  146. switch ($iinfo[2])
  147. {
  148. case 1:
  149. //imagegif($nimage,$destination);
  150. imagejpeg($nimage,$destination);
  151. break;
  152. case 2:
  153. imagejpeg($nimage,$destination);
  154. break;
  155. case 3:
  156. imagepng($nimage,$destination);
  157. break;
  158. case 6:
  159. imagewbmp($nimage,$destination);
  160. //imagejpeg($nimage,$destination);
  161. break;
  162. }
  163. //覆盖原上传文件
  164. imagedestroy($nimage);
  165. imagedestroy($simage);
  166. }
  167. if($imgpreview==1)
  168. {
  169. echo "<br>图片预览:<br>";
  170. echo "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
  171. echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
  172. $uu = str_replace("..","",$destination_folder.$fname ); //替换前面冒号
  173. echo "<script language=javascript>window.opener.document.form.File_img.value='".$uu ."';var opened=window.open('about:blank','_self');
  174. opened.opener=null;
  175. opened.close();
  176. </script>"; //将路径返回表单form中的文本框file
  177. //关闭自己
  178. }
  179. }
  180. ?>
  181. </body>
  182. </html>
  183. /*** 以上代码来自:编程之家 jb51.cc(jb51.cc) ***/

猜你在找的PHP相关文章