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 相关文章推荐
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
PHP的加密方式及原理
Jun 14 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
基于php缓存的详解
May 15 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
php中AES加密解密的例子小结
Feb 18 PHP
php中return的用法实例分析
Feb 28 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
python中栈的原理及实现方法示例
2019/11/27 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
导致python中import错误的原因是什么
2020/07/01 Python
web页面录屏实现
2019/02/12 HTML / CSS
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
黄河的主人教学反思
2014/02/07 职场文书
四年大学自我鉴定
2014/02/17 职场文书
境外导游求职信
2014/02/27 职场文书
竞选学委演讲稿
2014/09/13 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
滴水洞导游词
2015/02/10 职场文书
红色影片观后感
2015/06/18 职场文书
国庆节新闻稿
2015/07/17 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库