0

案例是:如何在服务器A中通过Html Form上传文件,上传的文件应该发送到服务器B

我阅读了与该主题相关的答案,但它只允许您以 post 方法发送数据。

  1. HTML/PHP Post 方法到不同的服务器

  2. Ajax POST 到另一台服务器 - 克服跨域限制

一些答案建议使用该ftp_fput()功能,这是有风险的,因为您的凭据将在线并可访问。(你应该使用ftp_login ( resource $ftp_stream , string $username , string $password )

4

1 回答 1

1

1. 使用 ftp(确保使用加密连接,而不是普通 ftp)和 scp,您可以使用 ssh 公钥身份验证,这与存储您的 mysql 密码同样安全,只需确保无法访问凭据即可。无论如何,您将需要任何类型的身份验证(也适用于 html/php)

1a。rsync + crontab 不能使用某种 cronjob 和 rsync 来完成任务吗?

2. 使用 curl 接收发送的文件

<?php

$url = 'http://target-server/accept.php';
//This needs to be the full path to the file you want to send.
$file = realpath('./sample.jpeg');

// the post fields.
// note the "@", to denote that the file path should be evaluated
$post = array(
    'extra_post_field' => '123456',
    'file_contents' => '@' . $file
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

// send the request & close the connection
$result = curl_exec($ch);
curl_close($ch);

// result is the response, this can also be a json response for example
echo $result;

?>

2b。接收文件(注意:这个例子需要一个安全/认证层)

<?php

// make sure targetFolder is writable by the webserver
$targetFolder = '/your/uploaded/files/folder';
// This will be the target file
$targetFile = $targetFolder . basename($_FILES['file_contents']['name']);

// do your authentication + validation here
echo '<pre>';
if (move_uploaded_file($_FILES['file_contents']['tmp_name'], $targetFile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Something went wrong uploading the file";
}
于 2013-07-05T14:24:20.943 回答