php curl sftp下载,php curl sftp

首先, 验证php的curl模块是否支持sftp,验证方法:

ldd curl.so |grep ssh

1

lddcurl.so|grepssh

有结果就是支持,否则就是不支持

curl 实现http文件上传的逻辑大致如下:

$url = "http://phpor.net/upload.php";

$s = curl_init();

curl_setopt($s,CURLOPT_RETURNTRANSFER,true);

curl_setopt($s,CURLOPT_URL,$url);

curl_setopt($s, CURLOPT_POST, true);

$file = new CURLFile('text.txt');

curl_setopt($s, CURLOPT_POSTFIELDS, array("file" => $file));

echo curl_exec($s);

echo curl_error($s);

1

2

3

4

5

6

7

8

9

10

11

$url="http://phpor.net/upload.php";

$s=curl_init();

curl_setopt($s,CURLOPT_RETURNTRANSFER,true);

curl_setopt($s,CURLOPT_URL,$url);

curl_setopt($s,CURLOPT_POST,true);

$file=newCURLFile('text.txt');

curl_setopt($s,CURLOPT_POSTFIELDS,array("file"=>$file));

echocurl_exec($s);

echocurl_error($s);

curl 实现sftp文件上传的方式是否可以如法炮制?

原以为修改下url地址(如: sftp://username:password@phpor.net/test.txt ) 就可以搞定,实际不然:(毕竟POSTFILDS 的内容就不太好解释),正确的姿势如下:

$url = "sftp://username:password@phpor.net/";

$s = curl_init();

curl_setopt($s,CURLOPT_RETURNTRANSFER,true);

curl_setopt($s,CURLOPT_URL,$url."/upload/text.txt");

curl_setopt($s, CURLOPT_UPLOAD, true); # 或者:curl_setopt($s, CURLOPT_PUT, true);

curl_setopt($s, CURLOPT_INFILE, fopen("text.txt", "r"));

echo curl_exec($s);

echo curl_error($s);

1

2

3

4

5

6

7

8

9

10

11

$url="sftp://username:password@phpor.net/";

$s=curl_init();

curl_setopt($s,CURLOPT_RETURNTRANSFER,true);

curl_setopt($s,CURLOPT_URL,$url."/upload/text.txt");

curl_setopt($s,CURLOPT_UPLOAD,true);# 或者:curl_setopt($s, CURLOPT_PUT, true);

curl_setopt($s,CURLOPT_INFILE,fopen("text.txt","r"));

echocurl_exec($s);

echocurl_error($s);

注意:

其中的 curl_setopt($s, CURLOPT_UPLOAD, true);  或 curl_setopt($s, CURLOPT_PUT, true); 是要有的,且: 换做curl_setopt($s, CURLOPT_PUT, true);  是不行的

CURLOPT_INFILE 是一个文件流,不能是文件名

有时候,ssh2模块使用起来更加方便,但是真的没有的时候,curl也不算太复杂;另外,ssh2 附带注册了一个stream wrapper, 当安装了ssh2模块时,你甚至可以 fopen(“sftp://….”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值