找回密码
 新建账号

PHP cURL上传文件到FTP服务器

[复制链接]
php 发表于 2017/12/4 23:12 | 显示全部楼层 |阅读模式
cURL上传文件到FTP服务器和上传文件到HTTP服务器有一些差别,在PHP中通过cURL将文件上传到FTP器时,CURLOPT_URL必须包含文件上传到FTP指定目录后存储时使用的文件名,而不能直接将CURLOPT_URL设置为保存上传文件的目录路径。当CURLOPT_URL设置成一个目录而不包含文件名时,在cURL执行请求以后调用curl_error()会出现Uploading to a URL without a file name!的错误信息。
以下代码为PHP cURL上传文件到FTP服务器的正确示范。
请注意USER:PASSWORD冒号前后分别是登录FTP服务器所使用的用户名和登录密码,除了通过CURLOPT_USERPWD指定用户名和登录密码以外,也可以直接按照ftp://USERNAME:PASSWORD@www.wuxiancheng.cn/books/的格式将用户名和登录密码写到FTP链接中去。
如果PHP版本低于7.1,并且操作系统是Windows,并且脚本代码是UTF-8,并且文件名或者文件路径名包含中文等非英文字符,需要将文件名和文件路径转成GBK,否则PHP无法读取文件。
  1. <?php
  2.         $ch = curl_init();
  3.         $filepath = 'D:\Web\www\wuxiancheng.cn\wuxiancheng.txt';
  4.         $basename = pathInfo($filepath, PATHINFO_BASENAME);
  5.         $filesize = filesize($filepath);
  6.         curl_setopt_array(
  7.                         $ch,
  8.                         array(
  9.                                         CURLOPT_URL => 'ftp://www.wuxiancheng.cn/books/' . $basename,
  10.                                         CURLOPT_USERPWD => 'USER:PASSWORD',
  11.                                         CURLOPT_PROTOCOLS => CURLPROTO_FTP,
  12.                                         CURLOPT_UPLOAD => true,
  13.                                         CURLOPT_INFILE => $filepath,
  14.                                         CURLOPT_INFILESIZE => $filesize,
  15.                                         CURLOPT_RETURNTRANSFER => true,
  16.                                         CURLOPT_HEADER => false,
  17.                         )
  18.         );
  19.         curl_exec($ch);
  20.         $message = curl_errno($ch) === CURLE_OK ? 'success' : 'failure';
  21.         echo $message;
  22. ?>
复制代码

手机版|轻松E站

GMT+8, 2024/10/7 16:57

快速回复 返回顶部 返回列表