PHP 图片上传代码


Posted in PHP onSeptember 13, 2011

PHP 图片上传代码
(代码片断试验成功,成功上传!)
因为昨天想起来学习一下PHP代码的冲动,是来源于像模仿着做一个类似公司IMAGE LIBRARY的东西出来。所以,今天当最基本的功能实现后,对PHP有了个概念性的认识后,就很自然地想到了个重要的功能急待实现,那就是图片的上传。
于是,开始在网上搜罗,找到个别人博客里的由三个页面组成的代码片断,于是拷下来研究,结果始终调试不成。本以为是公司电脑入域问题在作怪,后来经过一番尝试后,打算暂时放一下。回家去试(因为家里的电脑是最纯净的环境配制)。
到家后,将代码拷出来尝试了一下,依旧不行,同样的报错内容。很果断地,打算另辟蹊径,重新找个代码片断。哈,非常顺利,找到个仅一个页面的代码片断,一次尝试便成功了。CHEERS!
------------以下代码转载而来,贴上来和大家分享--------

<?php 
$uptypes=array('image/jpg', //上传文件类型列表 
'image/jpeg', 
'image/png', 
'image/pjpeg', 
'image/gif', 
'image/bmp', 
'image/x-png'); 
$max_file_size=5000000; //上传文件大小限制, 单位BYTE 
$destination_folder="upload/"; //上传文件路径 
$watermark=1; //是否附加水印(1为加水印,其他为不加水印); 
$watertype=1; //水印类型(1为文字,2为图片) 
$waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中); 
$waterstring="newphp.site.cz"; //水印字符串 
$waterimg="xplore.gif"; //水印图片 
$imgpreview=1; //是否生成预览图(1为生成,其他为不生成); 
$imgpreviewsize=1/2; //缩略图比例 
?> 
<html> 
<head> 
<title>M4U BLOG - fywyj.cn</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<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;} 
strong{font-size:12px;} 
aink{color:#0066CC;} 
a:hover{color:#FF6600;} 
aisited{color:#003366;} 
a:active{color:#9DCC00;} 
table.itable{} 
td.irows{height:20px;background:url("index.php?i=dots" repeat-x bottom}</style> 
</head> 
<body> 
<center><form enctype="multipart/form-data" method="post" name="upform"> 
上传文件: <br><br><br> 
<input name="upfile" type="file" style="width:200;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff" size="17"> 
<input type="submit" value="上传" style="width:30;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff" size="17"><br><br><br> 
允许上传的文件类型为:jpg|jpeg|png|pjpeg|gif|bmp|x-png|swf <br><br> 
<a href="index.php">返回</a> 
</form> 
<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
if (!is_uploaded_file($_FILES["upfile"][tmp_name])) 
//是否存在文件 
{ 
echo "<font color='red'>文件不存在!</font>"; 
exit; 
} 
$file = $_FILES["upfile"]; 
if($max_file_size < $file["size"]) 
//检查文件大小 
{ 
echo "<font color='red'>文件太大!</font>"; 
exit; 
} 
if(!in_array($file["type"], $uptypes)) 
//检查文件类型 
{ 
echo "<font color='red'>只能上传图像文件或Flash!</font>"; 
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; 
if (file_exists($destination) && $overwrite != true) 
{ 
echo "<font color='red'>同名文件已经存在了!</a>"; 
exit; 
} 
if(!move_uploaded_file ($filename, $destination)) 
{ 
echo "<font color='red'>移动文件出错!</a>"; 
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]; 
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("<font color='red'>不能上传此类型文件!</a>"); 
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 "<a href=\"".$destination."\" target='_blank'><img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize); 
echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\" border='0'></a>"; 
} 
} 
?> 
</center> 
</body> 
</html>
PHP 相关文章推荐
人尽可用的Windows技巧小贴士之下篇
Mar 22 PHP
PHP防注入安全代码
Apr 09 PHP
php 批量替换程序的具体实现代码
Oct 04 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
php自定义类fsocket模拟post或get请求的方法
Jul 31 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
php 原生分页
Apr 01 PHP
php中json_encode中文编码问题分析
Sep 13 #PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 #PHP
PHP获取MAC地址的函数代码
Sep 11 #PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 #PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 #PHP
20个PHP常用类库小结
Sep 11 #PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 #PHP
You might like
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
php+mysql数据库查询实例
2015/01/21 PHP
php中session与cookie的比较
2015/01/27 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
微信小程序如何使用云开发
2019/05/17 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python打印斐波拉契数列实例
2015/07/07 Python
Python缩进和冒号详解
2016/06/01 Python
python 性能优化方法小结
2017/03/31 Python
Python函数基本使用原理详解
2020/03/19 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
C#中的验证控件有几种
2014/03/08 面试题
英语老师推荐信
2014/02/26 职场文书
法制宣传日活动总结
2014/04/29 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL