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 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
有关 PHP 和 MySQL 时区的一点总结
Mar 26 PHP
php与php MySQL 之间的关系
Jul 17 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
Python数组定义方法
2016/04/13 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
python中列表的含义及用法
2020/05/26 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
房屋租赁授权委托书范本
2014/09/20 职场文书
安全月宣传标语
2014/10/07 职场文书
在职证明格式样本
2015/06/15 职场文书
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript