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中的时间处理
Oct 09 PHP
如何使用脚本模仿登陆过程
Nov 22 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
PHP动态分页函数,PHP开发分页必备啦
Nov 07 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 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下载生成的csv文件及问题总结
2015/08/06 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
python中mechanize库的简单使用示例
2014/01/10 Python
Python栈类实例分析
2015/06/15 Python
Python解析最简单的验证码
2016/01/07 Python
深入理解Django的自定义过滤器
2017/10/17 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
Python入门必须知道的11个知识点
2018/03/21 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
python编写实现抽奖器
2020/09/10 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
应届生法律求职信
2013/10/22 职场文书
公关关系专员的自我评价分享
2013/11/20 职场文书
转预备党员政审材料
2014/02/06 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL