您的位置:首页 > 编程语言 > PHP开发

php 上传文件到远程服务器

2015-10-09 16:54 961 查看
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';

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: