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(3)
Oct 09 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
php实现根据字符串生成对应数组的方法
Sep 22 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
PHP自动生成表单代码分享
Jun 19 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 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
php之字符串变相相减的代码
2007/03/19 PHP
php之XML转数组函数的详解
2013/06/07 PHP
php定界符
2014/06/19 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
Javascript MD4
2006/12/20 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Python3如何判断三角形的类型
2020/04/12 Python
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
校运会口号
2014/06/18 职场文书
党员目标管理责任书
2014/07/25 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2015年预算员工作总结
2015/05/14 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
python脚本框架webpy模板赋值实现
2021/11/20 Python