• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    文件上傳類

    發布: 2007-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 10次 | 進入軟件測試論壇討論

    領測軟件測試網


    使用示例:
    upload.php
    <?php
    include_once "upload.class.php";
    if ($Submit != '')
    {
        $fileArr['file'] = $file;
        $fileArr['name'] = $file_name;
        $fileArr['size'] = $file_size;
        $fileArr['type'] = $file_type;
        /** 所允許上傳的文件類型 */
        $filetypes = array('gif','jpg','jpge','png');
        /** 文件上傳目錄 */
        $savepath = "/usr/htdocs/upload/";
        /** 沒有最大限制 0 無限制*/
        $maxsize = 0;
        /** 覆蓋 0 不允許  1 允許 */
        $overwrite = 0;
        $upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize);
        if (!$upload->run())
        {
         echo  "上傳失敗".$upload->errmsg();
        }
    }
    ?>
    <html>
    <head>
    <title>文件上傳</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>

    <body bgcolor="#FFFFFF" text="#000000">
    <form name="form1" enctype="multipart/form-data" method="post" action="">
      <input type="file" name="file">
      <input type="submit" name="Submit" value="Submit">
    </form>
    </body>
    </html>

    上傳類
    upload.class.php

    <?php
    //
    // +----------------------------------------------------------------------+
    // | 文件上傳                                                             |
    // | 本代碼僅供學習討論之用,允許隨意修改                                 |
    // | Author: whxbb(whxbb@21cn.com)                                        |
    // +----------------------------------------------------------------------+
    //
    // $Id: upload.class.php,v 1.0 2001/10/14 14:06:57 whxbb Exp $
    //

    $UPLOAD_CLASS_ERROR = array( 1 => '不允許上傳該格式文件',
                                 2 => '目錄不可寫',
                                 3 => '文件已存在',
                                 4 => '不知名錯誤',
                                 5 => '文件太大'
                                );

    /**
    * Purpose
    * 文件上傳
    *
    * Example
    *
        $fileArr['file'] = $file;
        $fileArr['name'] = $file_name;
        $fileArr['size'] = $file_size;
        $fileArr['type'] = $file_type;
        // 所允許上傳的文件類型
        $filetypes = array('gif','jpg','jpge','png');
        // 文件上傳目錄
        $savepath = "/usr/htdocs/upload/";
        // 沒有最大限制 0 無限制
        $maxsize = 0;
        // 覆蓋 0 不允許  1 允許
        $overwrite = 0;
        $upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize);
        if (!$upload->run())
        {
         echo   $upload->errmsg();
        }
    *
    * @author whxbb(whxbb@21cn.com)
    * @version 0.1
    */
    class upload
    {
        var $file;
        var $file_name;
        var $file_size;
        var $file_type;

        /** 保存名 */
        var $savename;
        /** 保存路徑 */
        var $savepath;
        /** 文件格式限定 */
        var $fileformat = array();
        /** 覆蓋模式 */
        var $overwrite = 0;
        /** 文件最大字節 */
        var $maxsize = 0;
        /** 文件擴展名 */
        var $ext;
        /** 錯誤代號 */
        var $errno;

        /**
         * 構造函數
         * @param $fileArr 文件信息數組 'file' 臨時文件所在路徑及文件名
                                        'name' 上傳文件名
                                        'size' 上傳文件大小
                                        'type' 上傳文件類型
         * @param savename 文件保存名
         * @param savepath 文件保存路徑
         * @param fileformat 文件格式限制數組
         * @param overwriet 是否覆蓋 1 允許覆蓋 0 禁止覆蓋
         * @param maxsize 文件最大尺寸
         */
        function upload($fileArr, $savename, $savepath, $fileformat, $overwrite = 0, $maxsize = 0) {
            $this->file = $fileArr['file'];
            $this->file_name = $fileArr['name'];
            $this->file_size = $fileArr['size'];
            $this->file_type = $fileArr['type'];

            $this->get_ext();
            $this->set_savepath($savepath);
            $this->set_fileformat($fileformat);
            $this->set_overwrite($overwrite);
            $this->set_savename($savename);
            $this->set_maxsize($maxsize);
        }

        /** 上傳  */
        function run()
        {
            /** 檢查文件格式 */
            if (!$this->validate_format())
            {
                $this->errno = 1;
                return false;
            }
            /** 檢查目錄是否可寫 */
            if(!@is_writable($this->savepath))
            {
                $this->errno = 2;
                return false;
            }
            /** 如果不允許覆蓋,檢查文件是否已經存在 */
            if($this->overwrite == 0 && @file_exists($this->savepath.$this->savename))
            {
                $this->errno = 3;
                return false;
            }
            /** 如果有大小限制,檢查文件是否超過限制 */
            if ($this->maxsize != 0 )
            {
                if ($this->file_size > $this->maxsize)
                {
                    $this->errno = 5;
                    return false;
                }
            }
            /** 文件上傳 */
           if(!@copy($this->file, $this->savepath.$this->savename))
           {
                $this->errno = 4;
                return false;
           }
           /** 刪除臨時文件 */
           $this->destory();
           return true;
        }

        /**
         * 文件格式檢查
         * @access protect
         */
        function validate_format()
        {

            if (!is_array($this->fileformat))  // 沒有格式限制
                return true;
           $ext = strtolower($this->ext);
            reset($this->fileformat);
            while(list($var, $key) = each($this->fileformat))
            {
                if (strtolower($key) == $ext)
                    return true;
            }
            reset($this->fileformat);
            return false;
        }

        /**
         * 獲取文件擴展名
         * access public
         */
        function get_ext()
        {
            $ext = explode(".", $this->file_name);
            $ext = $ext[count($ext) - 1];
            $this->ext = $ext;
        }
        /**
         * 設置上傳文件的最大字節限制
         * @param $maxsize 文件大小(bytes) 0:表示無限制
         * @access public
         */
        function set_maxsize($maxsize)
        {
            $this->maxsize = $maxsize;
        }

        /**
         * 設置覆蓋模式
         * @param 覆蓋模式 1:允許覆蓋 0:禁止覆蓋
         * @access public
         */
        function set_overwrite($overwrite)
        {
            $this->overwrite = $overwrite;
        }

        /**
         * 設置允許上傳的文件格式
         * @param $fileformat 允許上傳的文件擴展名數組
         * @access public
         */
        function set_fileformat($fileformat)
        {
            $this->fileformat = $fileformat;
        }

        /**
         * 設置保存路徑
         * @param $savepath 文件保存路徑:以 "/" 結尾
         * @access public
         */
        function set_savepath($savepath)
        {
            $this->savepath = $savepath;
        }
        /**
         * 設置文件保存名
         * @savename 保存名,如果為空,則系統自動生成一個隨機的文件名
         * @access public
         */
        function set_savename($savename)
        {
            if ($savename == '')  // 如果未設置文件名,則生成一個隨機文件名
            {
                srand ((double) microtime() * 1000000);
                $rnd = rand(100,999);
                $name = date('Ymdhis') + $rnd;
                $name = $name.".".$this->ext;
            } else {
                $name = $savename;
            }
            $this->savename = $name;
        }
        /**
         * 刪除文件
         * @param $file 所要刪除的文件名
         * @access public
         */
        function del($file)
        {
            if(!@unlink($file))
            {
                $this->errno = 3;
                return false;
            }
            return true;
        }
        /**
         * 刪除臨時文件
         * @access proctect
         */
        function destory()
        {
            $this->del($this->file);
        }

        /**
         * 得到錯誤信息
        * @access public
          * @return error msg string or false
         */
        function errmsg()
        {
            global $UPLOAD_CLASS_ERROR;
            
            if ($this->errno == 0)
                return false;
            else
                return $UPLOAD_CLASS_ERROR[$this->errno];
        }
    }
    ?>

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>