`
350530133
  • 浏览: 16297 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php文件上传示例程序

阅读更多

<?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文件上传的示例程序

    在这个“asp文件上传的示例程序”中,我们看到几个关键文件,它们共同构成了一个简单的文件上传系统,尤其是针对图片的处理。以下是这些文件及其对应的知识点: 1. **upimage.asp**:这是文件上传的主要页面。它...

    包括文件上传的示例程序源代码

    【标题】"包括文件上传的示例程序源代码"提供了几个关键知识点,主要涉及C#编程语言中的文件上传实现,以及可能的网络通信和委托机制。以下是对这些知识点的详细阐述: 1. **C# 委托**: C# 委托是类型安全的函数...

    asp.net文件上传示例

    同时,考虑到安全性和性能,你可能需要对上传的文件大小进行限制,以及执行一些验证,如检查文件类型,防止恶意文件上传。 在实际项目中,文件上传可能涉及更复杂的功能,例如多文件上传、进度条显示、错误处理等。...

    ASP.NET Ajax 带进度条文件上传示例

    3. **文件上传组件**:虽然这个示例不是依赖于特定的控件,但是ASP.NET提供了一些内置的文件上传控件,如`&lt;asp:FileUpload&gt;`,用于用户选择要上传的文件。开发者可能自定义了一个HTML元素或jQuery插件来模拟这个功能...

    SWFUpload多文件上传示例

    SWFUpload是一款强大的JavaScript库,专门用于实现多文件上传功能,尤其在Web应用程序中非常有用。这个库利用了Adobe Flash技术来提供一个友好的用户界面,允许用户选择并上传多个文件,而无需多次点击或刷新页面。...

    struts2 文件上传和下载示例程序

    这个“Struts2 文件上传和下载示例程序”是一个演示如何在Struts2中实现这两个功能的实例。 文件上传是Web应用程序中的一项重要功能,允许用户从本地计算机选择文件并将其传输到服务器。在Struts2中,这一过程涉及...

    asp.net 大文件上传示例

    标题"asp.net 大文件上传示例"表明我们将探讨如何在ASP.NET环境中处理大文件的上传问题。描述提到,这个示例代码是实用且可修改的,作者已经成功地实现了基于AJAX的上传方式,而且是针对.NET Framework 2.0版本的。 ...

    一些小程序源码示例

    这些压缩包文件包含了一系列小程序的源码示例,旨在为开发者提供学习和参考。小程序是一种轻量级的应用形式,它们不需要下载安装即可在微信、支付宝等平台上使用,为用户提供便捷的服务。以下是对每个源码示例的简要...

    多文件上传示例!!!!欢迎下载

    本示例是关于如何实现多文件上传的一个实例,适用于Asp.Net开发者,旨在帮助他们理解并实现这一功能。 首先,`Default.aspx`是Asp.Net中的默认网页,它通常包含用户界面元素,如表单和控件。在这个多文件上传示例中...

    php示例课件~示例程序源码

    这个名为"php示例课件~示例程序源码"的资源是为学习PHP编程设计的一套教学材料,包含了从第1章到第6章的示例课件和源代码,旨在帮助初学者理解并掌握PHP的基础知识和实际应用。 首先,我们来详细探讨PHP的基本概念...

    Android源码——手机文件上传示例.zip

    在Android平台上,文件上传是一个常见的任务,特别是在开发应用程序时,如社交网络应用、云存储服务或者数据同步功能。本示例主要关注如何在Android中实现手机文件上传的完整流程,结合给定的资源,我们可以深入理解...

    带有进度条的文件上传示例

    在IT行业中,文件上传是一个常见的功能,特别是在网页和应用程序中。为了提高用户体验,尤其是在处理大文件或长时间上传时,带有进度条的文件上传变得尤为重要。本示例将深入讲解如何实现这样一个功能,包括其背后的...

    PHP+Flash文件上传程序(含flash fla源码)

    总的来说,这个PHP+Flash文件上传程序是一个实用的示例,可以帮助开发者理解如何结合这两种技术实现文件上传功能。虽然现在Flash已经逐渐被淘汰,但其原理和思路对于理解现代Web开发中的文件上传处理仍然有价值。...

    一些小程序源码示例(大约有60个)

    这些压缩包文件包含了一系列小程序的源码示例,总计约60个,是学习和理解小程序开发的宝贵资源。小程序是一种轻量级的应用形式,它无需下载安装即可使用,广泛应用于生活服务、电商购物、社交互动等多个领域。通过...

    asp.net文件上传示例分享

    首先,文件上传是Web应用程序中常见的功能之一,它允许用户选择一个或多个文件,然后将文件从客户端传输到服务器。在***中实现文件上传,通常有三种常用的方法: 方法一:使用Web控件*** ***的FileUpload控件是一种...

    ASP.NET-[上传下载]ASPX多文件上传示例源码.zip

    在这个"ASP.NET-[上传下载]ASPX多文件上传示例源码.zip"压缩包中,包含了一个具体的多文件上传功能的示例代码,这对于开发者来说是学习和理解如何在ASP.NET环境中实现文件上传功能的宝贵资源。 文件上传在Web应用中...

    PHP上传文件简单示例

    这个简单的示例将向我们展示如何在PHP中处理文件上传。首先,我们需要理解PHP的`$_FILES`全局数组,它是用来存储上传文件信息的核心。 `$_FILES`数组包含了关于上传文件的详细信息,如文件名、类型、大小、错误代码...

    ASP.NET+jQuery 批量文件上传控件及示例程序

    这是一个ASP.NET多文件上传用户控件的源代码,另附上了控件的应用实例,加入了jQuery插件,实现了批量无刷新上传,客户端判断文件上传类型,你可以在页面中直接调用,小巧方便。实例只是为了演示,暂时只支持JPG/GIF...

    ftp上传示例java代码

    在这个“ftp上传示例java代码”中,我们主要会探讨如何使用Java实现FTP功能,包括文件上传、目录操作以及断点续传。 1. **FTP基本概念** - FTP协议基于TCP,分为ASCII和二进制两种传输模式,分别用于文本文件和二...

    C#Webservice+微信小程序上传多个文件

    在提供的`微信小程序测试.zip`中,应该包含了微信小程序端进行文件上传的示例代码,可以查看并学习如何实现客户端的文件选择和上传逻辑。`HttpPostedFileWrapperReceiveFileTest.zip`可能包含了一个使用`...

Global site tag (gtag.js) - Google Analytics