PHP ftp类实现远程附件上传例子

 更新时间:2016年11月25日 15:37  点击:1560
多服务器数据同步并且实时数据处理功能想了很多没找到合适的工具了,今天想了可以使用ftp+rsync工具来实现,下文重点介绍的是php ftp上传类的实现了。

现在很多地方需要用ftp类操作另外的网站服务器,上传图片之类的。现在贴一个php ftp类给大家

class Ftp {
       
    //FTP 连接资源
    private $link;
    //FTP连接时间
    public $link_time;
    //错误代码
    private $err_code = 0;
    //传送模式{文本模式:FTP_ASCII, 二进制模式:FTP_BINARY}
    public $mode = FTP_BINARY;
       
    /**
     * 连接FTP服务器
     * @param string $host       服务器地址
     * @param string $username   用户名
     * @param string $password   密码
     * @param integer $port       服务器端口,默认值为21
     * @param boolean $pasv        是否开启被动模式
     * @param boolean $ssl      是否使用SSL连接
     * @param integer $timeout     超时时间 
     */
    public function connect($host, $username = '', $password = '', $port = '21', $pasv = false, $ssl = false, $timeout = 30) {
        $start = time();
        if ($ssl) {
            if (!$this->link = @ftp_ssl_connect($host, $port, $timeout))     {
                $this->err_code = 1;
                return false;
            }
        } else {
            if (!$this->link = @ftp_connect($host, $port, $timeout)) {
                $this->err_code = 1;
                return false;
            }
        }
       
        if (@ftp_login($this->link, $username, $password)) {
            if ($pasv)
                ftp_pasv($this->link, true);
            $this->link_time = time() - $start;
            return true;
        } else {
            $this->err_code = 1;
            return false;
        }
        register_shutdown_function(array(&$this, 'close'));
    }
       
    /**
     * 创建文件夹
     * @param string $dirname 目录名,
     */
    public function mkdir($dirname) {
        if (!$this->link) {
            $this->err_code = 2;
            return false;
        }
        $dirname = $this->ck_dirname($dirname);
        $nowdir = '/';
        foreach ($dirname as $v) {
            if ($v && !$this->chdir($nowdir . $v)) {
                if ($nowdir)
                    $this->chdir($nowdir);
                @ftp_mkdir($this->link, $v);
            }
            if ($v)
                $nowdir .= $v . '/';
        }
        return true;
    }
       
    /**
     * 上传文件
     * @param string $remote 远程存放地址
     * @param string $local 本地存放地址
     */
    public function put($remote, $local) {
        if (!$this->link) {
            $this->err_code = 2;
            return false;
        }
        $dirname = pathinfo($remote, PATHINFO_DIRNAME);
        if (!$this->chdir($dirname)) {
            $this->mkdir($dirname);
        }
        if (@ftp_put($this->link, $remote, $local, $this->mode)) {
            return true;
        } else {
            $this->err_code = 7;
            return false;
        }
    }
       
    /**
     * 删除文件夹
     * @param string $dirname  目录地址
     * @param boolean $enforce 强制删除
     */
    public function rmdir($dirname, $enforce = false) {
        if (!$this->link) {
            $this->err_code = 2;
            return false;
        }
        $list = $this->nlist($dirname);
        if ($list && $enforce) {
            $this->chdir($dirname);
            foreach ($list as $v) {
                $this->f_delete($v);
            }
        } elseif ($list && !$enforce) {
            $this->err_code = 3;
            return false;
        }
        @ftp_rmdir($this->link, $dirname);
        return true;
    }
       
    /**
     * 删除指定文件
     * @param string $filename 文件名
     */
    public function f_delete($filename) {
        if (!$this->link) {
            $this->err_code = 2;
            return false;
        }
        if (@ftp_delete($this->link, $filename)) {
            return true;
        } else {
            $this->err_code = 4;
            return false;
        }
    }
       
    /**
     * 返回给定目录的文件列表
     * @param string $dirname  目录地址
     * @return array 文件列表数据
     */
    public function nlist($dirname) {
        if (!$this->link) {
            $this->err_code = 2;
            return false;
        }
        if ($list = @ftp_nlist($this->link, $dirname)) {
            return $list;
        } else {
            $this->err_code = 5;
            return false;
        }
    }
       
    /**
     * 在 FTP 服务器上改变当前目录
     * @param string $dirname 修改服务器上当前目录
     */
    public function chdir($dirname) {
        if (!$this->link) {
            $this->err_code = 2;
            return false;
        }
        if (@ftp_chdir($this->link, $dirname)) {
            return true;
        } else {
            $this->err_code = 6;
            return false;
        }
    }
       
    /**
     * 获取错误信息
     */
    public function get_error() {
        if (!$this->err_code)
            return false;
        $err_msg = array(
            '1' => 'Server can not connect',
            '2' => 'Not connect to server',
            '3' => 'Can not delete non-empty folder',
            '4' => 'Can not delete file',
            '5' => 'Can not get file list',
            '6' => 'Can not change the current directory on the server',
            '7' => 'Can not upload files'
        );
        return $err_msg[$this->err_code];
    }
       
    /**
     * 检测目录名
     * @param string $url 目录
     * @return 由 / 分开的返回数组
     */
    private function ck_dirname($url) {
        $url = str_replace('', '/', $url);
        $urls = explode('/', $url);
        return $urls;
    }
       
    /**
     * 关闭FTP连接
     */
    public function close() {
        return @ftp_close($this->link);
    }
       
}

先来说说远程附件上传的大致流程:

  用户选择文件上传提交到服务器->服务器接收到文件->服务器一些安全检测完成通过FTP功能上传到相应FTP服务器。

我说的只是一个大概过程,不是很标准,明白个意思即可啦!~

这个类大致使用方法:

 首先通过 $ftps->connect($host,$username,$password,$post,$pasv,$ssl,$timeout);进行FTP服务器连接。

 通过具体的函数进行FTP的操作。

  $ftps->mkdir() 创建目录,可以创建多级目录以“/abc/def/higk”的形式进行多级目录的创建。

  $ftps->put()上传文件

  $ftps->rmdir()删除目录

  $ftps->f_delete()删除文件

  $ftps->nlist()列出指定目录的文件

  $ftps->chdir()变更当前文件夹

  $ftps->get_error()获取错误信息

rsync工具同步

这里只介绍原理了rsync同步在windows中只能使用windows计划任务来实现了,我们可以定义为1小时同步一次,这样可以保证同步失败文件再次同步一下,当然在ftp上传类时可以做一个错误日志记录,上传失败之后记录在一个日志文件,然后我们可以手工点击再实现一次上传了,这样台保证万无一失了。

PDO是高版本php中的一个mysql数据库操作功能了,我们下面就一起来看看关于php中PDO的一些学习笔记,有兴趣了解PDO的朋友可一起来看看哦.

一、PDO简介

  PDO是PHP Data Object的简称,用于定义数据库访问的抽象层,统一各种数据库的访问接口。PDO有如下特性:

编码一致性:PDO支持多种数据库扩展,并为其提供统一的访问接口
灵活性:PDO提供了统一的SQL操作方法和属性
高效性:PDO是用C编写、PHP编译的
面向对象:PDO完全采纳面向对象的思想
  PDO支持的数据库:

pdo支持的数据库

  但是,需要注意的是,PDO只是提供了一组数据库访问接口,利用PDO本身不能操作任何数据库。

二、PDO对象

  利用PDO的构造函数连接特定的数据库,创建一个PDO对象。在利用PDO之前,需要开启PDO扩展。以PHP+MySQL为例,

  开启PHP对PDO的扩展:在php.ini中去掉extension=php_pdo.dll的注释。

  开启MySQL对PDO的扩展:在my.ini中去掉extension=php_pdo_mysql.dll的注释。

  利用phpinfo()可以查看是否开启PDO扩展。

  1、连接数据库

    PDO连接数据库有三种方式:

   1.1  通过参数形式连接(推荐)

$dsn = "mysql:host=localhost;dbname=xxx";
$username = "xxxxx";
$pwd = "xxxx";
$pdo = new PDO($dsn,$username,$pwd);
  PDO构造函数还有一个$options参数,它是一个数组,用于配置运行中的数据库,如是否开启自动提交、设置结果集的返回方式等。

  1.2  通过uri连接

  首先建立一个文件,保存数据源,文件内容形如:mysql:host=localhost;dbname=xxx。然后在程序中引入该文件。

$dsn = "uri:file://保存数据源配置的文件路径";
$username = "xxxxx";
$pwd = "xxxx";
$pdo = new PDO($dsn,$username,$pwd);
  1.3  通过配置文件连接

  在php.ini中的任意一个位置添加数据源的配置:

        pdo.dsn.test=”mysql:host=localhost;dbname=xxxx”;

  test是自定义的数据源名称。为方便,可以在php.ini的首行中添加,然后重启服务器,在程序中引入该数据源

$dsn = "test";    //数据源名称
$username = "xxxxx";
$pwd = "xxxx";
$pdo = new PDO($dsn,$username,$pwd);
  2、PDO对象的常见方法和属性

方法或属性 描述
exec() 执行一条SQL语句,返回受影响的行数。用于增删改,对查询返回0
query() 执行一条SQL语句,返回PDOStatement对象,用于保存结果集
prepare() 执行一条SQL语句,返回PDOStatement对象
quote() 返回一个添加引号的字符串,用于SQL语句,可防止SQL注入
lastInsertId 返回最后插入的ID
setAttribute() 设置数据库连接属性
getAttribute() 获取数据库连接属性
errorCode() 获取跟数据库句柄上一次操作相关的SQLSTATE
errorInfo() 获取跟数据库句柄上一次操作相关的错误信息
beginTransaction() 开启一个事务。需要先关闭自动提交
commit() 提交事务
rollBack() 回滚事务
inTransaction() 检查操作是否在事务内
 

三、PDOStatement对象

  PDO对象的query()和prepare()方法均会返回一个PDOStatement对象,该对象可以用于PDO的预处理执行。其常见方法如下:

方法 描述
execute() 执行一条预处理语句
rowCount() 返回上一个SQL语句影响的行数
fetch() 从结果集中获取一行
fetchAll() 返回一个包含结果中所有行的数组
setFetchMode() 设置默认获取结果集的模式
fetchObject() 获取结果集下一行并作为对象返回
fetchColumn() 获取结果集下一行的单独一列
bindParam() 绑定一个参数到指定的变量名
bindValue() 将某个值绑定到指定的参数
bindColumn() 绑定一列到PHP变量
getColumnMeta() 返回结果集中一列的元素据
columnCount() 返回结果中的列数
setAttribute() 设置一个语句属性
getAttribute() 获取一个语句属性
errorCode() 获取跟数据库句柄上一次操作相关的SQLSTATE
errorInfo() 获取跟数据库句柄上一次操作相关的错误信息
debugDumpparams() 打印一条SQL预处理语句
nextRowset() 在一个多行集语句句柄中推进到下一个行集
 

四、异常模式

 PDO支持三种异常模式:

默认模式:PDO::ERRMODE_CLIENT
警告模式:PDO::ERRMODE_WARNING
异常模式:PDO::ERRMODE_EXCEPTION(推荐)
  可以在PDO的构造函数的第四个$options参数或用PDO对象的setAttribute()方法设置。

从一个简单的理解来看在PHP中$_GET $_POST $_REQUEST都是接受数据了,get接受的是url参数而post可以说是由表单post过来的数据,而request是可以接受两者的数据,这个就是他们基础的区别所在了,下面一起来看看它们的区别证明。

PHP中有$_REQUEST与$_POST、$_GET用于接受表单数据。

一、$_REQUEST与$_POST、$_GET的区别和特点

$_REQUEST[]具用$_POST[] $_GET[]的功能,但是$_REQUEST[]比较慢。通过POST和GET方法提交的所有数据都可以通过$_REQUEST数组获得。

二、$_POST、$_GET的区别和特点

1.         GET是从服务器上获取数据,POST是向服务器传送数据。
2.         GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3.         对于GET方式提交表单数据,服务器端用$_GET[‘name’]获取变量的值,对于POST方式提交表单数据,服务器端用$_POST[‘name’]获取提交的数据,当然,两者都可以通过$_REQUEST[‘name’]获得表单数据。对于REQUEST方式提交表单数据,服务器端用$_REQUEST[‘name’]获取变量的值,但这种方式很少用。
4.         GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,一般认为不能超过100KB。
5.         GET安全性非常低,POST安全性较高。
6.         GET表单值可以通过_GET获取;但通过action的url设置的参数总是获取不到的,<form method="get" action="a.asp?b=b">跟<form method="get"action="a.asp">是一样的,也就是说,在这种情况下,GET方式会忽略action页面后边带的参数列表。POST表单值可以通过_POST获取;但通过action的url参数设置的参数则可以不能通过_POST获取到。action=test.php?id=1这种就是GET方式传值,可以用$_REQUEST和$_GET接受传值,但不能用POST方式获取到值,即使表单是POST方式提交。所在,在提交表单时,如果action中同时有参数,最好只能通过POST表单方式,对于表单内数据,直接通过POST获取,对于action中参数,童工GET获取。
在做数据查询时,建议用GET方式,而在做数据添加、修改或删除时,建议用POST方式。
request是先读取 get再读post 的, 同时存在, 即覆盖掉前面的变量。

经典实例:

<?php
echo "get\n";
print_r($_GET);
echo "post\n";
print_r($_POST);
echo "request\n";
print_r($_REQUEST);
?>
<form method=post action='?a=1&b=2'>
<input type=text name=a value='a'>
<input type=text name=b value='b'>
<input type=submit value=test>
</form>
 
输出结果:

get:
Array
(
  [a] => 1
  [b] => 2
)
post:
Array
(
  [a] => a
  [b] => b
)
request:
Array
(
  [a] => a
  [b] => b
)
 
其实,在php配置文件php.ini中有一个设置项:variables_order = "GPCS" ,GPCS分别是GET,POST,Cookie,Server的首字母缩写,variables_order = "GPCS"含义是php文件中变量的解析顺序是GET,POST,Cookie和Server。

编码转换一直是一个比较头痛的问题我们通常会因一些编码问题导致页面乱码了,下文小编整理了一个unicode编码转为utf-8编码的例子,大家一起来看看.

在前端开发中,为了让中文在不同的环境下都能很好的显示,一般是将中文转化为unicode格式,即u4f60,比如:"你好啊"的unicode编码为"u4f60u597du554a"。

JS里将中文转为unicode编码很简单。

JS代码:
function convert2Unicode(str) {
    return str.replace(/[u0080-uffff]/g,
    function($0) {
        var tmp = $0.charCodeAt(0).toString(16);
        return "u" + new Array(5 - tmp.length).join('0') + tmp;
    });
}

反转也很简单,直接alert出来或者innerHTML到dom节点里都可以。
但如果将u4f60u597du554a"字符传递给php,php就不能直接echo或者其他操作了。直接echo的话还是原生的字符,不能自动转化为中文。
php将unicode转为utf-8方法
在 php5.0及以上版本中提供了json_encode, json_decode方法。在使用json_encode变量的时候,如果变量里含有中文的话,会将中文转为unicode格式。所以在想是否可以通过 json_decode将unicode转为中文呢?实际测试发现是可以的,但对单一的字符串发现有些问题。
对于简单的字符串,发现有时候使用json_decode转的化,结果直接为空了。但将字符串替换为数组然后在转就可以了。下面为封装的代码:
php代码:
function unicode2utf8($str){
        if(!$str) return $str;
        $decode = json_decode($str);
        if($decode) return $decode;
        $str = '["' . $str . '"]';
        $decode = json_decode($str);
        if(count($decode) == 1){
                return $decode[0];
        }
        return $str;
}

使用这个方法可以很好的将unicode编码转为utf-8编码。
附上js转为实体字符和php将实体字符转为汉字的方法
js将汉字转为实体字符:
js代码:
function convert2Entity(str) {
    var len = str.length;
    var re = [];
    for (var i = 0; i < len; i++) {       
        var code = str.charCodeAt(i);         if (code > 256) {
            re.push('&#' + code + ';');
        } else {
            re.push(str.charAt(i));
        }
    }
    return re.join('');
}
php将实体字符转为utf-8汉字的方法:
php代码:
function entity2utf8onechar($unicode_c){
    $unicode_c_val = intval($unicode_c);
    $f=0x80; // 10000000
    $str = "";
    // U-00000000 - U-0000007F:   0xxxxxxx
    if($unicode_c_val <= 0x7F){         $str = chr($unicode_c_val);     }     //U-00000080 - U-000007FF:  110xxxxx 10xxxxxx     else if($unicode_c_val >= 0x80 && $unicode_c_val <= 0x7FF){         $h=0xC0; // 11000000         $c1 = $unicode_c_val >> 6 | $h;
        $c2 = ($unicode_c_val & 0x3F) | $f;
        $str = chr($c1).chr($c2);
    }
    //U-00000800 - U-0000FFFF:  1110xxxx 10xxxxxx 10xxxxxx
    else if($unicode_c_val >= 0x800 && $unicode_c_val <= 0xFFFF){         $h=0xE0; // 11100000         $c1 = $unicode_c_val >> 12 | $h;
        $c2 = (($unicode_c_val & 0xFC0) >> 6) | $f;
        $c3 = ($unicode_c_val & 0x3F) | $f;
        $str=chr($c1).chr($c2).chr($c3);
    }
    //U-00010000 - U-001FFFFF:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    else if($unicode_c_val >= 0x10000 && $unicode_c_val <= 0x1FFFFF){         $h=0xF0; // 11110000         $c1 = $unicode_c_val >> 18 | $h;
        $c2 = (($unicode_c_val & 0x3F000) >>12) | $f;
        $c3 = (($unicode_c_val & 0xFC0) >>6) | $f;
        $c4 = ($unicode_c_val & 0x3F) | $f;
        $str = chr($c1).chr($c2).chr($c3).chr($c4);
    }
    //U-00200000 - U-03FFFFFF:  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
    else if($unicode_c_val >= 0x200000 && $unicode_c_val <= 0x3FFFFFF){         $h=0xF8; // 11111000         $c1 = $unicode_c_val >> 24 | $h;
        $c2 = (($unicode_c_val & 0xFC0000)>>18) | $f;
        $c3 = (($unicode_c_val & 0x3F000) >>12) | $f;
        $c4 = (($unicode_c_val & 0xFC0) >>6) | $f;
        $c5 = ($unicode_c_val & 0x3F) | $f;
        $str = chr($c1).chr($c2).chr($c3).chr($c4).chr($c5);
    }
    //U-04000000 - U-7FFFFFFF:  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
    else if($unicode_c_val >= 0x4000000 && $unicode_c_val <= 0x7FFFFFFF){         $h=0xFC; // 11111100         $c1 = $unicode_c_val >> 30 | $h;
        $c2 = (($unicode_c_val & 0x3F000000)>>24) | $f;
        $c3 = (($unicode_c_val & 0xFC0000)>>18) | $f;
        $c4 = (($unicode_c_val & 0x3F000) >>12) | $f;
        $c5 = (($unicode_c_val & 0xFC0) >>6) | $f;
        $c6 = ($unicode_c_val & 0x3F) | $f;
        $str = chr($c1).chr($c2).chr($c3).chr($c4).chr($c5).chr($c6);
    }
    return $str;
}
function entities2utf8($unicode_c){
    $unicode_c = preg_replace("/&#([da-f]{5});/es", "entity2utf8onechar('\1')", $unicode_c);
    return $unicode_c;
}

使用方式:

$utf8chars = entities2utf8("啊你好啊");

cookie跨域问题一直是一个大问题了,很多朋友都不知道怎么来解决就使用了json来处理了,其实还有一个更简单的办法,下面我们一起来看看吧

在setcookie 方法前,添加如下 header 即可

header('P3P: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"');
a.com/test

<script src="http://b.com/get_cookie.php"></script>
//b.com/get_cookie.php
header('P3P: ........');
setcookie(...)

a.com/test 可正常获取b.com/get_cookie.php 的cookie数据

[!--infotagslink--]

相关文章

  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • EXCEL数据上传到SQL SERVER中的简单实现方法

    EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
  • SQLMAP结合Meterpreter实现注入渗透返回shell

    sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25
  • DWVA上传漏洞挖掘的测试例子

    DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞...2016-11-25
  • PHP swfupload图片上传的实例代码

    PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
  • PHP实现今天是星期几的几种写法

    复制代码 代码如下: // 第一种写法 $da = date("w"); if( $da == "1" ){ echo "今天是星期一"; }else if( $da == "2" ){ echo "今天是星期二"; }else if( $da == "3" ){ echo "今天是星期三"; }else if( $da == "4"...2013-10-04
  • 百度编辑器ueditor修改图片上传默认路径

    本案例非通用,仅作笔记以备用 修改后的结果是 百度编辑器里上传的图片路径为/d/file/upload1...2014-07-03
  • 原生js实现fadein 和 fadeout淡入淡出效果

    js里面设置DOM节点透明度的函数属性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/100(兼容FF和GG)。 先来看看设置透明度的兼容性代码: 复制代码 代码如下: function setOpacity(ele, opacity) { if (...2014-06-07
  • SpringMVC文件上传原理及实现过程解析

    这篇文章主要介绍了SpringMVC文件上传原理及实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-15
  • 借助FileReader实现将文件编码为Base64后通过AJAX上传

    这篇文章主要介绍了借助FileReader实现将文件编码为Base64后通过AJAX上传的方法,包括后端对文件数据解码并保存的PHP代码,需要的朋友可以参考下...2015-12-25
  • C#客户端程序Visual Studio远程调试的方法详解

    这篇文章主要给大家介绍了关于C#客户端程序Visual Studio远程调试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25