`

PHP图片上传代码一例

    博客分类:
  • php
 
阅读更多

分享一个php图片上传代码,如下:

 
  1. <?php  
  2. $uptypes=array('image/jpg'//上传文件类型列表  
  3. 'image/jpeg',  
  4. 'image/png',  
  5. 'image/pjpeg',  
  6. 'image/gif',  
  7. 'image/bmp',  
  8. 'application/x-shockwave-flash',  
  9. 'image/x-png');   
  10. $max_file_size=5000000; //上传文件大小限制, 单位BYTE  
  11. $destination_folder="upload/"//上传文件路径  
  12. $watermark=0; //是否附加水印(1为加水印,其他为不加水印);  
  13. $watertype=1; //水印类型(1为文字,2为图片)  
  14. $waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);  
  15. $waterstring="newphp.site.cz"//水印字符串  
  16. $waterimg="xplore.gif"//水印图片  
  17. $imgpreview=1; //是否生成预览图(1为生成,其他为不生成);  
  18. $imgpreviewsize=1/2; //缩略图比例  
  19. ?>  
  20. <html>  
  21. <head>  
  22. <title>PHP图片上传 - www.jbxue.com</title>  
  23. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  24. <style type="text/css">body,td{font-family:tahoma,verdana,arial;font-size:11px;line-height:15px;background-color:white;color:#666666;margin-left:20px;}   
  25. strong{font-size:12px;}  
  26. a:link{color:#0066CC;}  
  27. a:hover{color:#FF6600;}  
  28. a:visited{color:#003366;}  
  29. a:active{color:#9DCC00;}  
  30. table.itable{}  
  31. td.irows{height:20px;background:url("index.php?i=dots") repeat-x bottom}</style>  
  32. </head>  
  33. <body>  
  34. <center><form enctype="multipart/form-data" method="post" name="upform">  
  35. 上传文件: <br><br><br>  
  36. <input name="upfile" type="file" style="width:200;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff" size="17">  
  37. <input type="submit" value="上传" style="width:30;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff" size="17"><br><br><br>  
  38. 允许上传的文件类型为:jpg|jpeg|png|pjpeg|gif|bmp|x-png|swf <br><br>  
  39. <a href="index.php">返回</a>  
  40. </form>  
  41. <?php  
  42. if ($_SERVER['REQUEST_METHOD'] == 'POST')  
  43. {  
  44. if (!is_uploaded_file($_FILES["upfile"][tmp_name]))  
  45. //是否存在文件  
  46. {   
  47. echo "<font color='red'>文件不存在!</font>";  
  48. exit;  
  49. }  
  50.   
  51. $file = $_FILES["upfile"];  
  52. if($max_file_size < $file["size"])  
  53. //检查文件大小  
  54. {  
  55. echo "<font color='red'>文件太大!</font>";  
  56. exit;  
  57. }  
  58.   
  59. if(!in_array($file["type"], $uptypes))  
  60. //检查文件类型  
  61. // www.jbxue.com  
  62. echo "<font color='red'>只能上传图像文件或Flash!</font>";  
  63. exit;   
  64. }  
  65.   
  66. if(!file_exists($destination_folder))  
  67. mkdir($destination_folder);  
  68.   
  69. $filename=$file["tmp_name"];  
  70. $image_size = getimagesize($filename);   
  71. $pinfo=pathinfo($file["name"]);  
  72. $ftype=$pinfo[extension];  
  73. $destination = $destination_folder.time().".".$ftype;  
  74. if (file_exists($destination) && $overwrite != true)  
  75.   
  76. {  
  77. echo "<font color='red'>同名文件已经存在了!</a>";  
  78. exit;  
  79. }  
  80.   
  81. if(!move_uploaded_file ($filename$destination))  
  82. {  
  83. echo "<font color='red'>移动文件出错!</a>";  
  84. exit;  
  85. }  
  86.   
  87. $pinfo=pathinfo($destination);  
  88. $fname=$pinfo[basename];  
  89. echo " <font color=red>已经成功上传</font><br>文件名: <font color=blue>".$destination_folder.$fname."</font><br>";  
  90. echo " 宽度:".$image_size[0];  
  91. echo " 长度:".$image_size[1];  
  92. if($watermark==1)  
  93. {  
  94. $iinfo=getimagesize($destination,$iinfo);  
  95. $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);  
  96. $white=imagecolorallocate($nimage,255,255,255);  
  97. $black=imagecolorallocate($nimage,0,0,0);  
  98. $red=imagecolorallocate($nimage,255,0,0);  
  99. imagefill($nimage,0,0,$white);  
  100.   
  101. switch ($iinfo[2])  
  102. {  
  103. case 1:  
  104. $simage =imagecreatefromgif($destination);  
  105. break;  
  106. case 2:  
  107. $simage =imagecreatefromjpeg($destination);  
  108. break;  
  109. case 3:  
  110. $simage =imagecreatefrompng($destination);  
  111. break;  
  112. case 6:  
  113. $simage =imagecreatefromwbmp($destination);  
  114. break;  
  115. default:  
  116. die("<font color='red'>不能上传此类型文件!</a>");  
  117. exit;  
  118. }  
  119.   
  120. imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);  
  121. imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);  
  122.   
  123. switch($watertype)  
  124. {  
  125. case 1: //加水印字符串  
  126. imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);  
  127. break;  
  128. case 2: //加水印图片  
  129. $simage1 =imagecreatefromgif("xplore.gif");  
  130. imagecopy($nimage,$simage1,0,0,0,0,85,15);  
  131. imagedestroy($simage1);  
  132. break;  
  133. //编辑: www.jbxue.com  
  134. switch ($iinfo[2])  
  135. {  
  136. case 1:  
  137. //imagegif($nimage, $destination);  
  138.   
  139. imagejpeg($nimage$destination);  
  140. break;  
  141. case 2:  
  142. imagejpeg($nimage$destination);  
  143. break;  
  144. case 3:  
  145. imagepng($nimage$destination);  
  146. break;  
  147. case 6:  
  148. imagewbmp($nimage$destination);  
  149. //imagejpeg($nimage, $destination);  
  150. break;  
  151. }  
  152.   
  153. //覆盖原上传文件  
  154. imagedestroy($nimage);  
  155. imagedestroy($simage);  
  156. }  
  157.   
  158. if($imgpreview==1)  
  159. {  
  160. echo "<br>图片预览:<br>";  
  161. echo "<a href=/"".$destination."/" target='_blank'><img src=/"".$destination."/" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);  
  162. echo " alt=/"图片预览:/r文件名:".$destination."/r上传时间:/" border='0'></a>";  
  163. }  
  164. }  
  165. ?>  
  166. </center>  
  167. </body>  
  168. </html>  
分享到:
评论

相关推荐

    PHP开发实战1200例 第I卷光盘内容MR02

    PHP开发实战1200例里面含有书籍内代码和附赠内容,这是内容代码的第二部分,因为所有的代码合起来有1个G左右,我就一次上传一小部分,直到上传完成,总共15部分。大家可以看此书时参考这代码,后面的会不定期全部...

    PHP工作笔记.zip

    插入排序 - 希尔排序][二十例 交换排序 - 快速排序][二一例 算法求解应用][二二例 跟踪调试代码 XDebug][二三例 接口调试工具 SocketLog][二四例 递归 尾递归 迭代 回调][二五例 数据库操作(MySQL扩展)][二六例 ...

    PHP开发实战1200例源码

    实例150 可以上传图片的表单 180 实例151 通过POST方法提交表单元素 182 实例152 通过$_POST方法获取表单元素 182 实例153 通过GET方法提交表单元素 184 实例154 通过$_GET方法获取表单元素 185 3.2 文本框组件的...

    yii2高级应用之自定义组件实现全局使用图片上传功能的方法

    在yii2中,在使用到上传图片时有自带的一个上传图片类,但不太好用。 其中有一种方式,把自己写的一个上传图片类文件,注册成一个组件,在全局中使用。(我记得我在里面有写过一篇小物件的使用) 这里,我只作一个简单...

    php编程一百例

    包括各种php常用代码,适用的留言板、聊天室、文件上传下载、新闻公告、博客、投票、图书馆系统、游戏等代码....

    PHP开发实战1200例 第I卷内容MR01

    PHP开发实战1200例里面含有书籍内代码和附赠内容,这是内容代码的第一部分,因为所有的代码合起来有1个G左右,我就一次上传一小部分,直到上传完成,总共15部分。大家可以看此书时参考这代码,后面的会不定期全部...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    书名:《PHP开发实战1200例(第I卷)》(清华大学出版社.潘凯华.刘中华) PDF格式扫描版,全书分为5篇15章,共899页。2011年1月出版。 全书压缩打包成2部分,这是第1部分。 注:本系列图书的第I、II卷再版时均相应改名...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    书名:《PHP开发实战1200例(第I卷)》(清华大学出版社.潘凯华.刘中华) PDF格式扫描版,全书分为5篇15章,共899页。2011年1月出版。 全书压缩打包成2部分,这是第2部分。 注:本系列图书的第I、II卷再版时均相应改名...

    PHP图片处理之使用imagecopyresampled函数裁剪图片例子

    图片裁剪是指在一个大的背景图片中裁剪出一张指定区域的图片,常见的应用是在用户设置个人头像时,可以从上传的图片中,裁剪出一个合适的区域作为自己的个人头像图片。图像裁剪和图片缩放的相似,所以也是借助...

    大名鼎鼎SWFUpload- Flash+JS 上传

     SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTML、CSS和JavaScript来随心所欲的定制它在浏览器下的外观;它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的...

    Gelato CMS 0.95.zip

    你可以自由使用和修改代码,Gelato CMS有普通、图片、视频、音频、链接、对话六种文章格式。 安装教程: 下载Gelato CMS原版程序安装包。 创建网站所需要的数据库 将config-sample.php修改为config.php. ...

    Gelato CMS 0.95 汉化版.zip

    你可以自由使用和修改代码,Gelato CMS有普通、图片、视频、音频、链接、对话六种文章格式。 安装教程: 下载Gelato CMS汉化版版程序安装包。 创建网站所需要的数据库 将config-sample.php修改为config.php. ...

    xheditor-1.1.14

    特别说明:两种初始化方法只能选择其中一种使用,如果两种方法的代码同时存在页面中,方法2的代码不会有任何效果。 我们更倾向于推荐大家使用方法1,因为更简单易用,不涉及任何的Javascript代码。通过简单的参数...

    Gelato CMS v0.95 汉化版.rar

    你可以自由使用和修改代码,Gelato CMS有普通、图片、视频、音频、链接、对话六种文章格式。 安装教程 下载 gelato原版程序安装包。汉化版可以百度一下 创建网站所需要的数据库 将config-sample.php修改为config....

    网络安全原理与应用:任意文件上传攻击演示.pptx

    任意文件上传攻击演示一、任意文件上传漏洞的利用思路1、使用passthru() 函数来构建具有执行外部命令恶意代码的PHP文件,例:cmd.php2、将恶意代码上传到目标服务器,并显示出上传之后的路径和文件名例:../../...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    三种版本的在线图片裁剪基于UCenter camera.swf

    这里的 "/index.php" 似乎是 hardcode 在 camera.swf 里的,不过在最后的程序代码中会看到,如果我们指定的 ucapi 明确给定了一个 php 文件的话,可以绕开 index.php 这个文件名。换句话说,如果服务端不是采用 PHP...

    DZ论坛IP限制地区注册,有效防止灌水、防论坛群发机

    将程序代码上传至论坛根目录。 注册页限制:source/module/member/member_register.php 登陆页限制:source/module/member/member_logging.php 代码用记事本打开。在第一行 &lt;?php 后面换行输入以下代码 include ...

Global site tag (gtag.js) - Google Analytics