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

PHP利用curl上传文件到FTP服务器(无ftp扩展情况下)

    博客分类:
  • PHP
阅读更多

在一次需求中,需要一个FTP服务器作为中转站,程序定时在FTP服务器获取数据,定时上传数据库的数据到FTP服务器上,由于PHP没有安装ftp扩展,导致FTP操作很是麻烦,对于socket的理解不够深入,由于时间比较紧急,在同事指点下,想到了用curl方法,经过自己的整理,将curl方法整理为一个类:

 

<?php

/*
 * To change this template, choose Tools | Templates
 * ftp curl方法操作类
 */
class ftp{
    //FTP服务器地址
    public static $host = "127.0.0.1";
    //FTP端口
    public static $port = "2121";
    //上传的FTP目录
    public static $uploaddir = "upblod";
    //读取的FTP目录
    public static $readdir = "read";
    //FTP用户名
    public static $usrname = "user";
    //FTP密码
    public static $pwd = "pwd";
    /*
     * curl 方法将文件上传到FTP服务器
     * $filename上传到FTP的文件名,$uploadfile具体需要上传文件的地址(我用的绝对路径)
     */
    public static function ftp_upload($filename,$uploadfile)
    {
        $url = "ftp://".self::$host.":".self::$port."/".self::$uploaddir."/".$filename;
        //需要上传的文件
        $fp = fopen ($uploadfile, "r"); 
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_VERBOSE, 1);  //有意外发生则报道 
        curl_setopt($ch, CURLOPT_USERPWD, self::$usrname.':'.self::$pwd); //FTP登陆账号密码,模拟登陆 
        curl_setopt($ch, CURLOPT_URL, $url); 
        curl_setopt($ch, CURLOPT_PUT, 1); //用HTTP上传一个文件 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不输出 
        curl_setopt($ch, CURLOPT_INFILE, $fp); //要上传的文件 
        $http_result = curl_exec($ch); //执行 
        $error = curl_error($ch); 
        curl_close($ch); 
        fclose($fp);
        //成功上传文件 返回true
        if (!$error) 
        { 
            return true;
        }
     }
    /*
     * curl 方法将读取FTP文件并保存在本地使用
     * $filenameFTP服务器文件名,$filepath 保存到本地(服务器)的目录
     */    
    public static function ftp_read($filename,$filepath)
    {       
        $curl = curl_init(); 
        
        $target_ftp_file = "ftp://".self::$host.":".self::$port."/".self::$readdir."/".$filename;//完整路径
        
        curl_setopt($curl, CURLOPT_URL,$target_ftp_file);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_VERBOSE, 1);
        curl_setopt($curl, CURLOPT_FTP_USE_EPSV, 0);
        curl_setopt($curl, CURLOPT_TIMEOUT, 300); // times out after 300s
        curl_setopt($curl, CURLOPT_USERPWD,self::$usrname.':'.self::$pwd);//FTP用户名:密码
        // Sets up the output file
        //本地保存目录
        if(is_dir($filepath)){
         $outfile = fopen($filepath.$filename, 'w');//保存到本地的文件名
         curl_setopt($curl,CURLOPT_FILE,$outfile);
         // Executes the cURL 
         $info = curl_exec($curl);
         fclose($outfile);
         $error_no = curl_errno($curl);
         curl_close($curl);
         //成功读取文件,返回 true
         if($info){
             return true;
         }
        }        
     }
}
?>

 这里只是做了上传与下载文件,删除文件的操作没有涉及,有兴趣的童鞋可以研究下

分享到:
评论

相关推荐

    php扩展 php_curl

    在Windows系统中,这些文件必须在系统的PATH环境变量所包含的目录下,或者与PHP可执行文件在同一目录下,才能确保PHP能够正确地加载并使用`php_curl`扩展。 **二、php_curl.dll** php_curl.dll是`php_curl`扩展的...

    php curl安装 php中没有编译curl的解决方法for windows

    在PHP开发过程中,cURL库是一个非常重要的工具,它允许我们执行HTTP请求并与其他网络服务进行交互。...一旦安装成功,你就可以利用PHP的cURL功能轻松地执行HTTP请求,实现诸如文件上传、下载、网页抓取等多种功能。

    php的FTP操作类( 拷贝、移动、删除文件 创建目录 ).zip

    `login()`方法用于验证用户身份,确保可以成功登录到FTP服务器。`pasv()`方法可能用于设置被动模式,这对于通过防火墙或NAT进行FTP传输是必要的。 接着,文件管理功能是FTP类的核心部分。`mkdir()`方法用于创建远程...

    PHP通过CURL下载文件

    ### PHP通过CURL下载文件 #### 一、概述 在Web开发中,有时我们需要通过脚本的方式自动下载网络上的文件,比如PDF文档、图片、文本文件等。PHP提供了多种方式来实现这一功能,其中一种非常实用的方法就是使用CURL...

    php5.3php_curl

    8. **文件上传与下载**:通过cURL,可以实现文件的上传和下载操作,支持断点续传。 9. **重定向处理**:cURL可以自动处理HTTP重定向,或者由开发者控制是否跟随重定向。 10. **回调函数**:可以设置回调函数处理响应...

    php实现curl模拟ftp上传的方法

    在这个`upload`函数中,参数`$dir`表示FTP服务器上的目标目录,`$src`是本地待上传文件的路径,`$dest`是上传到FTP服务器后文件的新名称。函数首先初始化cURL会话,然后打开本地文件以准备上传。接着,通过`curl_...

    安装curl扩展

    在IT领域,尤其是在Web开发中,PHP是一种广泛使用的脚本语言,而curl扩展则是PHP中一个非常重要的组件,用于处理HTTP请求,使PHP能够与远程服务器进行数据交换。本文将详细解析如何在LAMP(Linux、Apache、MySQL、...

    64位php_curl.dll文件

    文件复制到WAMP服务器的PHP目录下的`ext`子目录中。通常路径为`C:\wamp\bin\php\[php_version]\ext`,其中`[php_version]`是你正在使用的PHP版本号。 3. **修改php.ini**:打开php.ini文件,找到“;extension=...

    php_curl win8 安装

    本文将详细介绍如何在Windows 8操作系统上安装PHP的cURL扩展,以便你可以利用这个功能丰富的库进行网页抓取、文件上传、HTTP认证等各种网络操作。 首先,让我们了解PHP和cURL。PHP(Hypertext Preprocessor)是一种...

    压缩包有方法解决win7 64位下curl扩展不能开启,php_curl各个php版本完美下载包,最高php5.6

    cURL(Client URL Library)是一个用于传输数据的开源库,它支持多种协议,如HTTP、HTTPS、FTP、FTPS等,广泛应用于PHP中进行网页抓取和文件传输。在PHP中,cURL扩展允许开发者通过编程方式与远程服务器进行交互,...

    php应用curl扩展抓取网页类.zip

    在PHP开发中,有时我们需要从远程网站获取数据,如文章内容、标题等,这时我们可以利用cURL(Client URL Library)扩展来实现。`php应用curl扩展抓取网页类.zip`这个压缩包提供了一个PHP类,它封装了cURL功能,方便...

    PHP_Curl使用详解.doc

    2. 将这些文件复制到系统的 system32 目录下。 3. 修改 php.ini 文件,取消 `;extension=php_curl.dll` 行前的分号。 4. 保存配置并重启服务器。 5. 创建一个简单的 PHP 文件测试 Curl 是否已启用,例如: ```php ...

    【CLI】利用Curl下载文件实时进度条显示的实现

    但是在上述代码中,我们已经可以从其提供的信息中了解到,在利用CLI和Curl下载文件时,如何结合进度条扩展包,使用PHP编写代码实现进度条的实时显示。这不仅提高了程序的友好性,也有利于用户更好地理解下载过程的...

    php_curl.dll

    3. 文件上传下载:cURL支持FTP、FTPS、SCP等协议,可以实现文件的上传和下载。 4. 邮件发送:通过SMTP协议,cURL可以帮助开发者实现邮件的发送功能。 要正确使用php_curl.dll,首先需要确保PHP环境已经正确安装了...

    Linux系统安装php扩展cURL.doc

    为了增强PHP的功能,我们可以安装各种扩展,其中cURL是一个特别有用的扩展,它允许PHP程序与各种网络协议(如HTTP、FTP、SMTP等)进行交互。本文将详细介绍如何在Linux环境下为PHP安装cURL扩展。 首先,让我们看看...

    Win7 64 位系统下 php_curl

    在Windows 7 64位操作系统中,PHP的curl扩展是一个常见的工具,用于处理HTTP和其他协议的客户端URL传输。...通过检查和修复上述环节,大多数情况下都能成功启用php_curl扩展,从而恢复PHP的curl功能。

    PHP使用curl模拟post上传及接收文件的方法

    PHP使用curl模拟post上传及接收文件的方法主要涉及利用PHP语言中的cURL库来模拟HTTP POST请求,从而实现文件上传到服务器以及从服务器接收文件的功能。在PHP中,cURL是一个强大的库,用于与服务器进行交互,它支持...

    php73和拓展curl需要用到的dll

    “拓展curl”指的是PHP的cURL扩展,它允许PHP通过多种协议(如HTTP、HTTPS、FTP等)发送请求,进行文件传输、网页抓取等任务。cURL是PHP中非常重要的一个库,尤其在处理网络数据和API交互时。 描述中提到的“里面放...

    PHP实现通过CURL上传文件功能示例

    $_FILES数组中包含了文件上传过程中所有相关信息,如上传文件的临时存储位置、文件名、大小、错误信息等。服务器端脚本根据需要处理这些信息,比如验证文件类型、大小,然后保存文件或执行其他相关逻辑。 在提供的...

    php_curl_使用实例

    2. **复制 DLL 文件**:将找到的这三个 DLL 文件复制到系统的 `system32` 文件夹下。 3. **启用 cURL 扩展**:编辑 `php.ini` 文件,找到如下行: ```ini ;extension=php_curl.dll ``` 去掉前面的分号(`;`),...

Global site tag (gtag.js) - Google Analytics