在一次需求中,需要一个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;
}
}
}
}
?>
这里只是做了上传与下载文件,删除文件的操作没有涉及,有兴趣的童鞋可以研究下
分享到:
相关推荐
在Windows系统中,这些文件必须在系统的PATH环境变量所包含的目录下,或者与PHP可执行文件在同一目录下,才能确保PHP能够正确地加载并使用`php_curl`扩展。 **二、php_curl.dll** php_curl.dll是`php_curl`扩展的...
在PHP开发过程中,cURL库是一个非常重要的工具,它允许我们执行HTTP请求并与其他网络服务进行交互。...一旦安装成功,你就可以利用PHP的cURL功能轻松地执行HTTP请求,实现诸如文件上传、下载、网页抓取等多种功能。
`login()`方法用于验证用户身份,确保可以成功登录到FTP服务器。`pasv()`方法可能用于设置被动模式,这对于通过防火墙或NAT进行FTP传输是必要的。 接着,文件管理功能是FTP类的核心部分。`mkdir()`方法用于创建远程...
### PHP通过CURL下载文件 #### 一、概述 在Web开发中,有时我们需要通过脚本的方式自动下载网络上的文件,比如PDF文档、图片、文本文件等。PHP提供了多种方式来实现这一功能,其中一种非常实用的方法就是使用CURL...
8. **文件上传与下载**:通过cURL,可以实现文件的上传和下载操作,支持断点续传。 9. **重定向处理**:cURL可以自动处理HTTP重定向,或者由开发者控制是否跟随重定向。 10. **回调函数**:可以设置回调函数处理响应...
在这个`upload`函数中,参数`$dir`表示FTP服务器上的目标目录,`$src`是本地待上传文件的路径,`$dest`是上传到FTP服务器后文件的新名称。函数首先初始化cURL会话,然后打开本地文件以准备上传。接着,通过`curl_...
在IT领域,尤其是在Web开发中,PHP是一种广泛使用的脚本语言,而curl扩展则是PHP中一个非常重要的组件,用于处理HTTP请求,使PHP能够与远程服务器进行数据交换。本文将详细解析如何在LAMP(Linux、Apache、MySQL、...
文件复制到WAMP服务器的PHP目录下的`ext`子目录中。通常路径为`C:\wamp\bin\php\[php_version]\ext`,其中`[php_version]`是你正在使用的PHP版本号。 3. **修改php.ini**:打开php.ini文件,找到“;extension=...
本文将详细介绍如何在Windows 8操作系统上安装PHP的cURL扩展,以便你可以利用这个功能丰富的库进行网页抓取、文件上传、HTTP认证等各种网络操作。 首先,让我们了解PHP和cURL。PHP(Hypertext Preprocessor)是一种...
cURL(Client URL Library)是一个用于传输数据的开源库,它支持多种协议,如HTTP、HTTPS、FTP、FTPS等,广泛应用于PHP中进行网页抓取和文件传输。在PHP中,cURL扩展允许开发者通过编程方式与远程服务器进行交互,...
在PHP开发中,有时我们需要从远程网站获取数据,如文章内容、标题等,这时我们可以利用cURL(Client URL Library)扩展来实现。`php应用curl扩展抓取网页类.zip`这个压缩包提供了一个PHP类,它封装了cURL功能,方便...
2. 将这些文件复制到系统的 system32 目录下。 3. 修改 php.ini 文件,取消 `;extension=php_curl.dll` 行前的分号。 4. 保存配置并重启服务器。 5. 创建一个简单的 PHP 文件测试 Curl 是否已启用,例如: ```php ...
但是在上述代码中,我们已经可以从其提供的信息中了解到,在利用CLI和Curl下载文件时,如何结合进度条扩展包,使用PHP编写代码实现进度条的实时显示。这不仅提高了程序的友好性,也有利于用户更好地理解下载过程的...
3. 文件上传下载:cURL支持FTP、FTPS、SCP等协议,可以实现文件的上传和下载。 4. 邮件发送:通过SMTP协议,cURL可以帮助开发者实现邮件的发送功能。 要正确使用php_curl.dll,首先需要确保PHP环境已经正确安装了...
为了增强PHP的功能,我们可以安装各种扩展,其中cURL是一个特别有用的扩展,它允许PHP程序与各种网络协议(如HTTP、FTP、SMTP等)进行交互。本文将详细介绍如何在Linux环境下为PHP安装cURL扩展。 首先,让我们看看...
在Windows 7 64位操作系统中,PHP的curl扩展是一个常见的工具,用于处理HTTP和其他协议的客户端URL传输。...通过检查和修复上述环节,大多数情况下都能成功启用php_curl扩展,从而恢复PHP的curl功能。
PHP使用curl模拟post上传及接收文件的方法主要涉及利用PHP语言中的cURL库来模拟HTTP POST请求,从而实现文件上传到服务器以及从服务器接收文件的功能。在PHP中,cURL是一个强大的库,用于与服务器进行交互,它支持...
“拓展curl”指的是PHP的cURL扩展,它允许PHP通过多种协议(如HTTP、HTTPS、FTP等)发送请求,进行文件传输、网页抓取等任务。cURL是PHP中非常重要的一个库,尤其在处理网络数据和API交互时。 描述中提到的“里面放...
$_FILES数组中包含了文件上传过程中所有相关信息,如上传文件的临时存储位置、文件名、大小、错误信息等。服务器端脚本根据需要处理这些信息,比如验证文件类型、大小,然后保存文件或执行其他相关逻辑。 在提供的...
2. **复制 DLL 文件**:将找到的这三个 DLL 文件复制到系统的 `system32` 文件夹下。 3. **启用 cURL 扩展**:编辑 `php.ini` 文件,找到如下行: ```ini ;extension=php_curl.dll ``` 去掉前面的分号(`;`),...