php上传文件

会写code的凳子哥 2014-07-28

<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>

<?php

/******************************************************************************

参数说明:

$max_file_size:上传文件大小限制,单位BYTE

$destination_folder:上传文件路径

$watermark:是否附加水印(1为加水印,其他为不加水印);

使用说明:

1.将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;

2.将extension_dir=改为你的php_gd2.dll所在目录;

******************************************************************************/

//上传文件类型列表

$uptypes=array(

'image/jpg',

'image/jpeg',

'image/png',

'image/pjpeg',

'image/gif',

'image/bmp',

'image/x-png'

);

$max_file_size=2000000;//上传文件大小限制,单位BYTE

$destination_folder="uploadimg/";//上传文件路径

$watermark=0;//是否附加水印(1为加水印,其他为不加水印);

$watertype=1;//水印类型(1为文字,2为图片)

$waterposition=1;//水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);

$waterstring="";//水印字符串

$waterimg="";//水印图片

$imgpreview=1;//是否生成预览图(1为生成,其他为不生成);

$imgpreviewsize=1/2;//缩略图比例

?>

<html>

<head>

<title>图片上传程序</title>

<styletype="text/css">

<!--

body

{

font-size:9pt;

}

input

{

background-color:#66CCFF;

border:1pxinset#CCCCCC;

}

-->

</style>

</head>

<body>

<formenctype="multipart/form-data"method="post"name="upform">

上传文件:

<inputname="upfile"type="file">

<inputtype="submit"value="上传"><br>

允许上传的文件类型为:<?=implode(',',$uptypes)?>

</form>

<?php

if($_SERVER['REQUEST_METHOD']=='POST')

{

$destination_folder=$destination_folder.date('Ym',time())."/";

echo$destination_folder;

if(!is_uploaded_file($_FILES["upfile"]["tmp_name"]))

//是否存在文件

{

echo"图片不存在!";

exit;

}

$file=$_FILES["upfile"];

if($max_file_size<$file["size"])

//检查文件大小

{

echo"文件太大!";

exit;

}

if(!in_array($file["type"],$uptypes))

//检查文件类型

{

echo"文件类型不符!".$file["type"];

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"同名文件已经存在了";

exit;

}

if(!move_uploaded_file($filename,$destination))

{

echo"移动文件出错";

exit;

}

$pinfo=pathinfo($destination);

$fname=$pinfo["basename"];

echo"<fontcolor=red>已经成功上传</font><br>文件名:<fontcolor=blue>".$destination_folder.$fname."</font><br>";

echo"宽度:".$image_size[0];

echo"长度:".$image_size[1];

echo"<br>大小:".$file["size"]."bytes";

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])

{

case1:

$simage=imagecreatefromgif($destination);

break;

case2:

$simage=imagecreatefromjpeg($destination);

break;

case3:

$simage=imagecreatefrompng($destination);

break;

case6:

$simage=imagecreatefromwbmp($destination);

break;

default:

die("不支持的文件类型");

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)

{

case1://加水印字符串

imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);

break;

case2://加水印图片

$simage1=imagecreatefromgif("xplore.gif");

imagecopy($nimage,$simage1,0,0,0,0,85,15);

imagedestroy($simage1);

break;

}

switch($iinfo[2])

{

case1:

//imagegif($nimage,$destination);

imagejpeg($nimage,$destination);

break;

case2:

imagejpeg($nimage,$destination);

break;

case3:

imagepng($nimage,$destination);

break;

case6:

imagewbmp($nimage,$destination);

//imagejpeg($nimage,$destination);

break;

}

//覆盖原上传文件

imagedestroy($nimage);

imagedestroy($simage);

}

if($imgpreview==1)

{

echo"<br>图片预览:<br>";

echo"<imgsrc=\"".$destination."\"width=".($image_size[0]*$imgpreviewsize)."height=".($image_size[1]*$imgpreviewsize);

echo"alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";

}

}

?>

</body>

</html>

相关推荐