我有一个在客户端计算机上运行的 Apache 服务器,并安装了 PHP。我已经安排了一项任务来自动创建数据库备份,并且工作正常。但将备份保存在系统运行的同一个硬盘上是没有意义的,所以我必须将其发送到其他地方。
起初,我尝试进行 PHP FTP 上传,但客户端的防火墙阻止了所有 FTP 连接,我无法解除阻止(他的公司不允许我)。
然后,我尝试使用 SMTP 将备份发送到电子邮件帐户。也没起作用。所有 SMTP 连接也被阻止(我知道......)。
我现在尝试通过 HTTP POST 请求访问网页(在我的服务器上),文件附加在页面标题上。这应该是可能的,因为这几乎就是浏览器使用文件输入对象所做的事情,对吧?我只是使用页眉发送多部分/数据。
我需要手动创建页眉吗?或者是否有任何脚本已经做到了这一点?
您可以使用curl http://php.net/curl通过 http 发送。假设您的文件是“/tmp/backup.tar.gz”,则为:
$ch = curl_init('http://clientserver.com/upload.php');
$ch = curl_setopt($ch, CURLOPT_POST, true);
$ch = curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@/tmp/backup.tar.gz'));
$ch = curl_setopt($ch, CURLOPT_USERPWD, 'username:password');
$result = curl_exec($ch);
if ($result === FALSE) {
die(curl_error($ch));
}
这就是基础知识。你可能需要让它更健壮一点。假设接收服务器上的上传脚本是用 php 完成的,您可以通过以下方式访问该文件$_FILES['file']
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)