案例是:如何在服务器A中通过Html Form上传文件,上传的文件应该发送到服务器B
我阅读了与该主题相关的答案,但它只允许您以 post 方法发送数据。
一些答案建议使用该ftp_fput()
功能,这是有风险的,因为您的凭据将在线并可访问。(你应该使用ftp_login ( resource $ftp_stream , string $username , string $password )
)
案例是:如何在服务器A中通过Html Form上传文件,上传的文件应该发送到服务器B
我阅读了与该主题相关的答案,但它只允许您以 post 方法发送数据。
一些答案建议使用该ftp_fput()
功能,这是有风险的,因为您的凭据将在线并可访问。(你应该使用ftp_login ( resource $ftp_stream , string $username , string $password )
)
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";
}