doumu2172 2016-12-15 04:54 采纳率: 0%
浏览 87

使用php中的curl通过HTTPS将文件上传到FTP服务器

I am trying to upload the data [can be text or zip] to the ftp site. As we have proxy in place in the environment so, I decided to upload the data using curl. Before I go head to set proxy server setting, I was testing the script on the environment without proxy.

I followed :- FTP upload file to distant server with CURL and PHP uploads a blank file

However, I couldn't able to upload a file.

link where, I would like to upload is this format:- https://fp.emc.com/.....

Do any one know, how to upload a file to ftp server over https using curl function of PHP?

<?php
$sendTo = 'https://ftp.emc.com/....?domain=XX&user=XXX&password=XXX'; 
$localfile ="23.txt";
$fp = fopen($localfile, 'r');
// Create CURL Connection 
$ch = curl_init(); 
//curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_USERPWD, "usr:passwd"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_FAILONERROR, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_URL, $sendTo); 
//curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
echo $ch;
$m=curl_exec ($ch);
echo "m $m<br>";
    $error_no = curl_errno($ch);
    echo "error_no $error_no<br>";
    curl_close ($ch);
        if ($error_no == 0) {
            $error = 'File uploaded succesfully.';
        } else {
            $error = 'File upload error.';
        }
echo $error;
?>
  • 写回答

1条回答 默认 最新

  • dsiuy42084 2017-01-04 09:11
    关注

    Try this:

    $fp = fopen($filepath, 'r');
    
    $ftp_url = "ftp://user:password@ftpserver:21/" . $filename;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $ftp_url);
    curl_setopt($ch, CURLOPT_UPLOAD, 1);
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filepath));
    curl_setopt($ch, CURLOPT_PROXY, $proxy_server_ip);
    curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_server_port);
    curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_login);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_exec($ch);
    curl_close($ch);
    

    It works for me.

    评论

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)