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',
  15. 'image/jpeg',
  16. 'image/png',
  17. 'image/pjpeg',
  18. 'image/gif',
  19. 'image/bmp',
  20. 'image/x-png'
  21. );
  22. $max_file_size=2000000;     //上传文件大小限制, 单位BYTE
  23. $destination_folder="uploadimg/"; //上传文件路径
  24. $watermark=1;      //是否附加水印(1为加水印,其他为不加水印);
  25. $watertype=1;      //水印类型(1为文字,2为图片)
  26. $waterposition=1;     //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
  27. $waterstring="http://www.xplore.cn/";  //水印字符串
  28. $waterimg="xplore.gif";    //水印图片
  29. $imgpreview=1;      //是否生成预览图(1为生成,其他为不生成);
  30. $imgpreviewsize=1/2;    //缩略图比例
  31. ?>
  32. <html>
  33. <head>
  34. <title>ZwelL图片上传程序</title>
  35. <style type="text/css">
  36. <!--
  37. body
  38. {
  39. font-size: 9pt;
  40. }
  41. input
  42. {
  43. background-color: #66CCFF;
  44. border: 1px inset #CCCCCC;
  45. }
  46. -->
  47. </style>
  48. </head>
  49. <body>
  50. <form enctype="multipart/form-data" method="post" name="upform">
  51. 上传文件:
  52. <input name="upfile" type="file">
  53. <input type="submit" value="上传"><br>
  54. 允许上传的文件类型为:<?=implode(', ',$uptypes)?>
  55. </form>
  56. <?php
  57. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  58. {
  59. if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
  60. //是否存在文件
  61. {
  62. echo "图片不存在!";
  63. exit;
  64. }
  65. $file = $_FILES["upfile"];
  66. if($max_file_size < $file["size"])
  67. //检查文件大小
  68. {
  69. echo "文件太大!";
  70. exit;
  71. }
  72. if(!in_array($file["type"], $uptypes))
  73. //检查文件类型
  74. {
  75. echo "文件类型不符!".$file["type"];
  76. exit;
  77. }
  78. if(!file_exists($destination_folder))
  79. {
  80. mkdir($destination_folder);
  81. }
  82. $filename=$file["tmp_name"];
  83. $image_size = getimagesize($filename);
  84. $pinfo=pathinfo($file["name"]);
  85. $ftype=$pinfo['extension'];
  86. $destination = $destination_folder.time().".".$ftype;
  87. if (file_exists($destination) && $overwrite != true)
  88. {
  89. echo "同名文件已经存在了";
  90. exit;
  91. }
  92. if(!move_uploaded_file ($filename, $destination))
  93. {
  94. echo "移动文件出错";
  95. exit;
  96. }
  97. $pinfo=pathinfo($destination);
  98. $fname=$pinfo[basename];
  99. echo " <font color=red>已经成功上传</font><br>文件名:  <font color=blue>".$destination_folder.$fname."</font><br>";
  100. echo " 宽度:".$image_size[0];
  101. echo " 长度:".$image_size[1];
  102. echo "<br> 大小:".$file["size"]." bytes";
  103. if($watermark==1)
  104. {
  105. $iinfo=getimagesize($destination,$iinfo);
  106. $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
  107. $white=imagecolorallocate($nimage,255,255,255);
  108. $black=imagecolorallocate($nimage,0,0,0);
  109. $red=imagecolorallocate($nimage,255,0,0);
  110. imagefill($nimage,0,0,$white);
  111. switch ($iinfo[2])
  112. {
  113. case 1:
  114. $simage =imagecreatefromgif($destination);
  115. break;
  116. case 2:
  117. $simage =imagecreatefromjpeg($destination);
  118. break;
  119. case 3:
  120. $simage =imagecreatefrompng($destination);
  121. break;
  122. case 6:
  123. $simage =imagecreatefromwbmp($destination);
  124. break;
  125. default:
  126. die("不支持的文件类型");
  127. exit;
  128. }
  129. imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
  130. imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);
  131. switch($watertype)
  132. {
  133. case 1:   //加水印字符串
  134. imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
  135. break;
  136. case 2:   //加水印图片
  137. $simage1 =imagecreatefromgif("xplore.gif");
  138. imagecopy($nimage,$simage1,0,0,0,0,85,15);
  139. imagedestroy($simage1);
  140. break;
  141. }
  142. switch ($iinfo[2])
  143. {
  144. case 1:
  145. //imagegif($nimage, $destination);
  146. imagejpeg($nimage, $destination);
  147. break;
  148. case 2:
  149. imagejpeg($nimage, $destination);
  150. break;
  151. case 3:
  152. imagepng($nimage, $destination);
  153. break;
  154. case 6:
  155. imagewbmp($nimage, $destination);
  156. //imagejpeg($nimage, $destination);
  157. break;
  158. }
  159. //覆盖原上传文件
  160. imagedestroy($nimage);
  161. imagedestroy($simage);
  162. }
  163. if($imgpreview==1)
  164. {
  165. echo "<br>图片预览:<br>";
  166. echo "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
  167. echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
  168. }
  169. }
  170. ?>
  171. </body>
  172. </html>

几乎考虑到了每个细节的php图片上传的更多相关文章

  1. PHP图片上传程序(完整版)

    从PHP100上搜刮来的,功能很强大.几乎考虑到了每个细节,与大家分享!~~~ <meta http-equiv="Content-Type" content="t ...

  2. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  3. 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  4. JS图片上传预览插件制作(兼容到IE6)

    其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...

  5. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术

    最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...

  6. 对百度的UEditor多图片上传的一些补充

    我已经写了一篇文章关于百度的UEditor提取多图片上传模块.如果还没有看过,请点击以下链接查看 http://www.cnblogs.com/luke1006/p/3719029.html 出差了两 ...

  7. 使用localResizeIMG3+WebAPI实现手机端图片上传

    前言 惯例~惯例~昨天发表的使用OWIN作为WebAPI的宿主..嗯..有很多人问..是不是缺少了什么 - - 好吧,如果你要把OWIN寄宿在其他的地方...代码如下: namespace Conso ...

  8. TinyMCE的使用(包括汉化及本地图片上传功能)

    TinyMCE我就不多介绍了,这是下载地址:https://www.tinymce.com/download/ 下载下来是英文版,要汉化也很简单.首先去网上随便下载个汉化包,然后把汉化包解压后的lan ...

  9. 包含修改字体,图片上传等功能的文本输入框-Bootstrap

    通过jQuery Bootstrap小插件,框任何一个div转换变成一个富文本编辑框,主要特色: 在Mac和window平台下自动针对常用操作绑定热键 可以拖拽插入图片,支持图片上传(也可以获取移动设 ...

随机推荐

  1. android make-standalone-toolchain.sh 使用说明

    #$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-24 --install-dir=./android ...

  2. 第二步 (仅供参考) sencha touch + PhoneGap(cordova 2.9 及其以下版本) 使用 adt eclipse进行打包

    首先你得安装一个adt-eclipse 参考资料 http://www.crifan.com/android_eclipse_offline_install_adt/ 然后就可以运行adt-eclip ...

  3. 一个linux命令之grep---1

    grep   表示“匹配” 参数常用的四个 -i    匹配的文件内容忽略大小写 -R   递归的匹配文件(即在一层一层的目录中的文件中去匹配) -n   表示匹配出的行显示在文件中的行号 -H   ...

  4. PCB器件重叠报错

    这几天画一个板子,,有一层器件是可以重叠的, 但是怎么修改规则也没有效果, 尝试把那个检测规则给删除,但是根本删除不掉! 后来发现 直接在规则的 这个选项直接把勾选去掉就可以了!

  5. 自动释放池autoreleasepool

    自动释放池是NSAutoreleasePool的实例,其中包含了收到autorelease消息的对象.当一个自动释放池自身被销毁(dealloc)时,它会给池中每一个对象发送一个release消息(如 ...

  6. parent.relativePath' points at wrong local POM

    这个错误通常是下载了子项目,没有把父项目下载下来. 子项目要依赖父项目的pom The relative path of the parent pom.xml file within the chec ...

  7. linux逻辑卷管理 (LVM)(转)

    1.什么是 LVM LVM 是逻辑盘卷管理(Logical Volume Manager)的简称,它是 Linux 环境下对磁盘分区进行管理的一种机制,LVM 是建立在硬盘和分区之上的一个逻辑层,来为 ...

  8. 使用IntelliJ IDEA进行Python远程调试的需求(未完)

    使用IntelliJ IDEA进行Python远程调试的需求(未完) 在研究深度学习Machlearning时,有时候需要借助ubuntu搭建的tensorflow环境,另外也有越来越多的运算程序只能 ...

  9. Oracle故障排查之oracle解决锁表问题

    --step 1:查看被阻塞会话等待事件 select sid, event, username, lockwait, sql.sql_text  from v$session s, v$sql sq ...

  10. iOS核心动画の摘记