<?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=1; //是否附加水印(1为加水印,其他为不加水印);
$watertype=1; //水印类型(1为文字,2为图片)
$waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring="http://www.xplore.cn/"; //水印字符串
$waterimg="xplore.gif"; //水印图片
$imgpreview=1; //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2; //缩略图比例
?>
<html>
<head>
<title>ZwelL图片上传程序</title>
<style type="text/css">
<!--
body
{
font-size: 9pt;
}
input
{
background-color: #66CCFF;
border: 1px inset #CCCCCC;
}
-->
</style>
</head>
<body>
<form enctype="multipart/form-data" method="post" name="upform">
上传文件:
<input name="upfile" type="file">
<input type="submit" value="上传"><br>
允许上传的文件类型为:<?=implode(', ',$uptypes)?>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
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 " <font color=red>已经成功上传</font><br>文件名: <font color=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])
{
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("不支持的文件类型");
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 "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
}
}
?>
分享到:
相关推荐
在这个“asp文件上传的示例程序”中,我们看到几个关键文件,它们共同构成了一个简单的文件上传系统,尤其是针对图片的处理。以下是这些文件及其对应的知识点: 1. **upimage.asp**:这是文件上传的主要页面。它...
【标题】"包括文件上传的示例程序源代码"提供了几个关键知识点,主要涉及C#编程语言中的文件上传实现,以及可能的网络通信和委托机制。以下是对这些知识点的详细阐述: 1. **C# 委托**: C# 委托是类型安全的函数...
同时,考虑到安全性和性能,你可能需要对上传的文件大小进行限制,以及执行一些验证,如检查文件类型,防止恶意文件上传。 在实际项目中,文件上传可能涉及更复杂的功能,例如多文件上传、进度条显示、错误处理等。...
3. **文件上传组件**:虽然这个示例不是依赖于特定的控件,但是ASP.NET提供了一些内置的文件上传控件,如`<asp:FileUpload>`,用于用户选择要上传的文件。开发者可能自定义了一个HTML元素或jQuery插件来模拟这个功能...
SWFUpload是一款强大的JavaScript库,专门用于实现多文件上传功能,尤其在Web应用程序中非常有用。这个库利用了Adobe Flash技术来提供一个友好的用户界面,允许用户选择并上传多个文件,而无需多次点击或刷新页面。...
这个“Struts2 文件上传和下载示例程序”是一个演示如何在Struts2中实现这两个功能的实例。 文件上传是Web应用程序中的一项重要功能,允许用户从本地计算机选择文件并将其传输到服务器。在Struts2中,这一过程涉及...
标题"asp.net 大文件上传示例"表明我们将探讨如何在ASP.NET环境中处理大文件的上传问题。描述提到,这个示例代码是实用且可修改的,作者已经成功地实现了基于AJAX的上传方式,而且是针对.NET Framework 2.0版本的。 ...
这些压缩包文件包含了一系列小程序的源码示例,旨在为开发者提供学习和参考。小程序是一种轻量级的应用形式,它们不需要下载安装即可在微信、支付宝等平台上使用,为用户提供便捷的服务。以下是对每个源码示例的简要...
本示例是关于如何实现多文件上传的一个实例,适用于Asp.Net开发者,旨在帮助他们理解并实现这一功能。 首先,`Default.aspx`是Asp.Net中的默认网页,它通常包含用户界面元素,如表单和控件。在这个多文件上传示例中...
这个名为"php示例课件~示例程序源码"的资源是为学习PHP编程设计的一套教学材料,包含了从第1章到第6章的示例课件和源代码,旨在帮助初学者理解并掌握PHP的基础知识和实际应用。 首先,我们来详细探讨PHP的基本概念...
在Android平台上,文件上传是一个常见的任务,特别是在开发应用程序时,如社交网络应用、云存储服务或者数据同步功能。本示例主要关注如何在Android中实现手机文件上传的完整流程,结合给定的资源,我们可以深入理解...
在IT行业中,文件上传是一个常见的功能,特别是在网页和应用程序中。为了提高用户体验,尤其是在处理大文件或长时间上传时,带有进度条的文件上传变得尤为重要。本示例将深入讲解如何实现这样一个功能,包括其背后的...
总的来说,这个PHP+Flash文件上传程序是一个实用的示例,可以帮助开发者理解如何结合这两种技术实现文件上传功能。虽然现在Flash已经逐渐被淘汰,但其原理和思路对于理解现代Web开发中的文件上传处理仍然有价值。...
这些压缩包文件包含了一系列小程序的源码示例,总计约60个,是学习和理解小程序开发的宝贵资源。小程序是一种轻量级的应用形式,它无需下载安装即可使用,广泛应用于生活服务、电商购物、社交互动等多个领域。通过...
首先,文件上传是Web应用程序中常见的功能之一,它允许用户选择一个或多个文件,然后将文件从客户端传输到服务器。在***中实现文件上传,通常有三种常用的方法: 方法一:使用Web控件*** ***的FileUpload控件是一种...
在这个"ASP.NET-[上传下载]ASPX多文件上传示例源码.zip"压缩包中,包含了一个具体的多文件上传功能的示例代码,这对于开发者来说是学习和理解如何在ASP.NET环境中实现文件上传功能的宝贵资源。 文件上传在Web应用中...
这个简单的示例将向我们展示如何在PHP中处理文件上传。首先,我们需要理解PHP的`$_FILES`全局数组,它是用来存储上传文件信息的核心。 `$_FILES`数组包含了关于上传文件的详细信息,如文件名、类型、大小、错误代码...
这是一个ASP.NET多文件上传用户控件的源代码,另附上了控件的应用实例,加入了jQuery插件,实现了批量无刷新上传,客户端判断文件上传类型,你可以在页面中直接调用,小巧方便。实例只是为了演示,暂时只支持JPG/GIF...
在这个“ftp上传示例java代码”中,我们主要会探讨如何使用Java实现FTP功能,包括文件上传、目录操作以及断点续传。 1. **FTP基本概念** - FTP协议基于TCP,分为ASCII和二进制两种传输模式,分别用于文本文件和二...
在提供的`微信小程序测试.zip`中,应该包含了微信小程序端进行文件上传的示例代码,可以查看并学习如何实现客户端的文件选择和上传逻辑。`HttpPostedFileWrapperReceiveFileTest.zip`可能包含了一个使用`...