PHP: 使用CURL访问FTP

今天要做FTP上传。本想用PHP自带的FTP函数来实现,结果发现这个模块没有编译进来,重新编译PHP太麻烦,改用其他方式实现吧

 FTP上传
if (isset($_POST['Submit'])) {

    if (!empty($_FILES['upload']['name'])) {

        $ch = curl_init();

        $localfile = $_FILES['upload']['tmp_name'];

        $fp = fopen($localfile, 'r');

        curl_setopt($ch, CURLOPT_URL, 'ftp://ftp_user:[email protected]/' . $_FILES['upload']['name']);

        curl_setopt($ch, CURLOPT_UPLOAD, 1);

        curl_setopt($ch, CURLOPT_INFILE, $fp);

        curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));

        curl_exec($ch);

        $error_no = curl_errno($ch);

        curl_close($ch);

        if ($error_no == 0) {

            $error = 'File uploaded succesfully.';

        } else {

            $error = 'File upload error.';

        }

    } else {

        $error = 'Please select a file.';

    }

}
从FTP下载
$curl = curl_init();

$target_ftp_file = 'ftp://192.168.1.12:/filepath/target.txt'; //完整路径



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, "user_name:password"); //FTP用户名:密码// Sets up the output file

$target_path = './data';

if (is_dir($target_path)) {

    $outfile = fopen($target_path . '/' . dest . txt);

    curl_setopt($curl, CURLOPT_FILE, $outfile);

    $info = curl_exec($curl);

    fclose($outfile);

    $error_no = curl_errno($curl);

    curl_close($curl);

}
 
  

 

你可能感兴趣的:(curl)