本文实例为大家分享了php实现ftp文件下载功能,供大家参考,具体内容如下
不知道为什么用正常的ftp_get函数下载文件速度特别慢,但是用ftp的客户端下载很快,所以换了curl的下载方式,速度正常
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
function file_upload( $ftpIp , $ftpUser , $ftpPwd , $path , $fileSavePath ){
$curlobj = curl_init(); //初始化
//传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg'
curl_setopt( $curlobj ,CURLOPT_URL, "ftp://" . $ftpIp . "/" . $path );
curl_setopt( $curlobj ,CURLOPT_HEADER,0); //不输出header
curl_setopt( $curlobj ,CURLOPT_RETURNTRANSFER,0);
//time out after 300s
curl_setopt( $curlobj ,CURLOPT_TIMEOUT,2000); //超时时间
//通过这个函数设置ftp的用户名和密码,没设置就不需要!
curl_setopt( $curlobj ,CURLOPT_USERPWD, $ftpUser . ':' . $ftpPwd );
$outfile = fopen ( $fileSavePath , 'w+' ); //保存到本地文件的文件名
curl_setopt( $curlobj ,CURLOPT_FILE, $outfile );
$rtn = curl_exec( $curlobj );
if (curl_errno( $curlobj )){
writeLog( 'Curl error: ' . curl_error( $curlobj ));
}
fclose( $outfile );
curl_close( $curlobj );
if ( $rtn == 1){
return true;
} else {
unlink( $fileSavePath ); //如果下载失败,但是本地open了这个文件,所以要删除
return false;
}
}
|
测试下载小文件是正常的,但是如果网速很慢,下载大文件时候,会报一个ftp timeout的错误,目前还在不知道是哪里配置问题,还是什么问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。