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 相关文章推荐
一个从别的网站抓取信息的例子(域名查询)
Oct 09 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
解析PHP 使用curl提交json格式数据
Jun 29 PHP
php strrpos()与strripos()函数
Aug 31 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
PHP常用正则表达式集锦
Aug 17 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
PHP单例模式详解及实例代码
Dec 21 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
php实现自动生成验证码的实例讲解
Nov 17 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
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
PDO::query讲解
2019/01/29 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python map和reduce函数用法示例
2015/02/26 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
python 实现图片裁剪小工具
2021/02/02 Python
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
《鸟岛》教学反思
2014/04/26 职场文书
内勤岗位职责
2015/02/10 职场文书
高中教师个人总结
2015/02/10 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
GPU服务器的多用户配置方法
2022/07/07 Servers