php 上传文件到远程服务器


FTP方式上传文件到远程服务器

if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {

    $ftp_server = "192.168.1.105";
    $ftp_user_name = "lesley";
    $ftp_user_pass = "123456";
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
    $file = $_FILES['uploadfile']['tmp_name'];
    $remote_file = '/test/'.$_FILES['uploadfile']['name'];
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

    if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
        echo "文件:".$_FILES['uploadfile']['name']."上传成功\n";
    } else {
        echo "上传失败\n";

    } 

    ftp_close($conn_id);




CURL远程上传文件  (模拟POST提交表单处理远程图片上传)

<?php
/**
 * Class CurlForm
 *
 * submit form data to a remote server use CURL
 * file upload support
 *
 * @link       
 * @author      Gavin yang
 * @msn:        athotmail88 @ hotmail.com
 */
class CurlForm
{
 /**
     * url where you want to submit the form
     * @var String
     */
  private $remoteUrl;
 
 /**
     * form vars
     * @var Array
     */
  private $postvars = array();
 
 /*
 * Constructor for CurlForm
 * @param String $remoteUrl url where you want to submit the form
 */
 public function __construct($remoteUrl)
 {
  $this->remoteUrl = $remoteUrl;

/*处理提交上来的表单变量,将post变量和files变量同时放入$this->postvars 中,注意,这里是返回的是数组,当然如果只是post变量也可以是字符串"a=b&c=d"的形式,如果含有files变量,就只能放在数组里面*/
  if(isset($_POST))
  {
   foreach ($_POST as $var => $val)
   {
    $this->postvars[$var] = $val;
   }
  }

/*上传文件的过程实际上分两步,第一步将文件上传到本地服务器,然后取得文件在本地服务器的缓存地址,也就是tmp_name;第二步是将这个缓存文件的数据发送到远程服务器,当然读取文件数据的过程已经在curl函数内部实现了,只要你在文件地址前面加上"@",curl就会认为这是个要传送的附件,但要保证这个文件是真实存在的。这样远程服务器端就接收到本地服务器提交过去的表单,由于向远程服务器上传的文件是本地服务器上的缓存文件,所以要取得原始文件的文件名,在post变量里我给增加了一个叫做'filename'的变量,它是和files变量一一对应的*/
  if(isset($_FILES))
  {
   foreach ($_FILES as $var => $val)
   {
    if (is_array($val['tmp_name']))
    {
     foreach ($val['tmp_name'] as $k=>$fname)
     {
      $this->postvars[$var."[$k]"]= "@".$fname;
      $this->postvars['filename'."[$var][$k]"]=  $val['name'][$k];
     }
    }
    else
    {
     $this->postvars[$var] = "@".$val['tmp_name'];
     $this->postvars['filename'."[$var]"] = $val['name'];
    }
   }
  }
 }

 /*
 * post form to remote server
 */
 public function post()
 {
  set_time_limit(0);
     $ch = curl_init();
  //设定远程地址


     curl_setopt($ch, CURLOPT_URL, $this->remoteUrl );
  //post方法
     curl_setopt($ch, CURLOPT_POST, 1);
  //表单变量
     curl_setopt($ch, CURLOPT_POSTFIELDS, $this->postvars);
  //设定是否直接显示返回的数据
//  curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  //设定是否显示头信息
//  curl_setopt($ch, CURLOPT_HEADER, false);
  //设定是否直接输出页面内容 false为输出
//  curl_setopt($ch, CURLOPT_NOBODY, false);
  curl_exec($ch);
  //出错则显示错误并退出
        curl_errno($ch) && die(curl_error($ch));
  //关闭资源
     curl_close($ch);
  exit();
 }
}
?>

 

 

 

server.php


<?php
echo "<pre>";
print_r($_POST);
print_r($_FILES);
echo "</pre>";

if(move_uploaded_file($_FILES['file1']['tmp_name'][1],'./test.txt')){
 echo 'ok';
}
?>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值