php图片上传存储源码并且可以预览


Posted in PHP onAugust 26, 2011
<?php 
header("content-Type: text/html; charset=gb2312"); 
$uptypes=array('image/jpg', //上传文件类型列表 
'image/jpeg', 
'image/png', 
'image/pjpeg', 
'image/gif', 
'image/bmp', 
'application/x-shockwave-flash', 
'image/x-png', 
'application/msword', 
'audio/x-ms-wma', 
'audio/mp3', 
'application/vnd.rn-realmedia', 
'application/x-zip-compressed', 
'application/octet-stream'); 
$max_file_size=10000000; //上传文件大小限制, 单位BYTE 
$path_parts=pathinfo($_SERVER['PHP_SELF']); //取得当前路径 
$destination_folder="up/"; //上传文件路径 
$watermark=0; //是否附加水印(1为加水印,0为不加水印); 
$watertype=1; //水印类型(1为文字,2为图片) 
$waterposition=2; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中); 
$waterstring="www.yinao.tk"; //水印字符串 
$waterimg="xplore.gif"; //水印图片 
$imgpreview=1; //是否生成预览图(1为生成,0为不生成); 
$imgpreviewsize=1/1; //缩略图比例 
?> 
<html xmlns="undefined"> 
<head> 
<title>图片上传储存</title> 
<LINK rel="Bookmark" href="http://www.yinao.tk/ico.ico" > 
<LINK rel="Shortcut Icon" href="http://www.yinao.tk/ico.ico" /> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<meta name="description" content="亿脑网盘_免费网络无限大图片上传储存" /> 
<style type="text/css"> 
body,td{font-family:tahoma,verdana,arial;font-size:11px;line-height:15px;background-color:white;color:#666666; 
strong{font-size:12px;} 
a:link{color:#0066CC;} 
a:hover{color:#FF6600;} 
a:visited{color:#003366;} 
a:active{color:#9DCC00;} 
a{TEXT-DECORATION:none} 
td.irows{height:20px;background:url("index.php?i=dots") repeat-x bottom} 
</style> 
</head> 
<script type="text/javascript">function oCopy(obj){obj.select();js=obj.createTextRange();js.execCommand("Copy");};function sendtof(url){window.clipboardData.setData('Text',url);alert('复制地址成功,粘贴给你好友一起分享。');};function select_format(){var on=document.getElementById('fmt').checked;document.getElementById('site').style.display=on?'none':'';document.getElementById('sited').style.display=!on?'none':'';};var flag=false;function DrawImage(ImgD){var image=new Image();image.src=ImgD.src;if(image.width>0&&image.height>0){flag=true;if(image.width/image.height>=120/80){if(image.width>120){ImgD.width=120;ImgD.height=(image.height*120)/image.width;}else {ImgD.width=image.width;ImgD.height=image.height;};ImgD.alt=image.width+"×"+image.height;}else {if(image.height>80){ImgD.height=80;ImgD.width=(image.width*80)/image.height;}else {ImgD.width=image.width;ImgD.height=image.height;};ImgD.alt=image.width+"×"+image.height;}};};function FileChange(Value){flag=false;document.all.uploadimage.width=10;document.all.uploadimage.height=10;document.all.uploadimage.alt="";document.all.uploadimage.src=Value;};</script> 
<body bgcolor="#FFFFFF"> 
<center> 
<form enctype="multipart/form-data" method="post" name="upform"> 
<table border="1" width="55%" id="table1" cellspacing=0> 
<tr> 
<td colspan="2"><p align="center">最大文件限制1M </td> 
</tr> 
<tr> 
<td width="10%"><div style="width:120px; height:80px;overflow:hidden;text-align: center;" ><IMG id=uploadimage height=0 width=0 src="" onload="javascript:DrawImage(this);" ></div></td> 
<td width="71%"><div style="width:361px; height:80px;overflow:hidden;text-align: center;padding:30px; " > 
<input style="width:208;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff; height:18" size="17" name=upfile type=file 
onchange="javascript:FileChange(this.value);"> 
<input type="submit" value="上传" style="width:60;border:1 solid #9a9999; font-size:9pt; background-color:#ffffff; height:18" size="17"></td> 
</tr> 
</table> 
允许上传的文件类型为:jpg|jpeg|gif|bmp|png|swf|mp3|wma|zip|rar|doc</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'>不能上传此类型文件!</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><table width=\"348\" cellspacing=\"0\" cellpadding=\"5\" border=\"0\" class=\"table_decoration\" align=\"center\"><tr><td><input type=\"checkbox\" id=\"fmt\" onclick=\"select_format()\"/>图片UBB代码<br/><div id=\"site\"><table border=\"0\"><tr><td valign=\"top\">文件地址:</td><td><input type=\"text\" onclick=\"sendtof(this.value)\" onmouseover=\"oCopy(this)\" style=font-size=9pt;color:blue size=\"44\" value=\"http://".$_SERVER['SERVER_NAME'].$path_parts["dirname"]."/".$destination_folder.$fname."\"/> 
</td></tr></table></div><div id=\"sited\" style=\"display:none\"><table border=\"0\"><tr><td valign=\"top\">文件地址:</td><td><input type=\"text\" onclick=\"sendtof(this.value)\" onmouseover=\"oCopy(this)\" style=font-size=9pt;color:blue size=\"44\" value=\"[img]http://".$_SERVER['SERVER_NAME'].$path_parts["dirname"]."/".$destination_folder.$fname."[/img]\"/></td></tr></table></div></td></tr></table>"; 
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文件名:".$fname."\r上传时间:".date('m/d/Y h:i')."\" border='0'></a>"; 
} 
} 
?> 
</center> 
</body> 
</html>
PHP 相关文章推荐
无数据库的详细域名查询程序PHP版(4)
Oct 09 PHP
下载文件的点击数回填
Oct 09 PHP
phpMyAdmin 安装教程全攻略
Mar 19 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
PHP+jQuery 注册模块开发详解
Oct 14 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
php实现可逆加密的方法
Aug 11 PHP
php实现递归的三种基本方式
Jul 04 PHP
汇总PHPmailer群发Gmail的常见问题
Feb 24 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
Apr 15 PHP
PHP中Session ID的实现原理实例分析
Aug 17 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 #PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 #PHP
PHP数组实例总结与说明
Aug 23 #PHP
JpGraph php柱状图使用介绍
Aug 23 #PHP
php报表之jpgraph柱状图实例代码
Aug 22 #PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 #PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 #PHP
You might like
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
JAVA/JSP学习系列之六
2006/10/09 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
自制PHP框架之设计模式
2017/05/07 PHP
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
JS作用域深度解析
2016/12/29 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
解读Python中degrees()方法的使用
2015/05/18 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
微信跳一跳python代码实现
2018/01/05 Python
python实现按行分割文件
2019/07/22 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
Python assert关键字原理及实例解析
2019/12/13 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
《红军不怕远征难》教学反思
2014/04/14 职场文书
主要领导对照检查材料
2014/08/26 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
2014年物流工作总结
2014/11/25 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书