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 编写的 25个游戏脚本
May 11 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
深入理解PHP内核(一)
Nov 10 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
使用ltrace工具跟踪PHP库函数调用的方法
Apr 25 PHP
php通过文件头判断格式的方法
May 28 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
基于swoole实现多人聊天室
Jun 14 PHP
php实现多站点共用session实现单点登录的方法详解
Sep 18 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 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连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP生成静态页
2006/11/25 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
python读写文件write和flush的实现方式
2020/02/21 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
活动总结怎么写啊
2014/05/07 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
高效课堂教学反思
2016/02/24 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书