如何上传一个文件到slim3中的另一台服务器php
问题描述:
我使用silm3作为我的REST API框架,并遵循this从API编写我的文件上传脚本。如何上传一个文件到slim3中的另一台服务器php
我目前在a.xyz.com上运行我的web应用程序,而我的REST API位于b.xyz.com。现在我想从b.xyz.com/upload上传一张图片到a.xyz.com/uploaded/。
$newfile->moveTo("/path/to/$uploadFileName");
用于保存当前子域中的文件。但是我没有把它上传到另一个子域。
我在网上搜索,但没有找到任何线索如何做到这一点。
答
在正确的位置上b.xyz.com移动文件后,请执行下列操作:
// Server B
// Move file to correct position on B
$newfile->moveTo("/path/to/$uploadFileName");
// Send file to A
$request = curl_init('a.xyz.com/upload');
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, [
'file' => new CURLFile("/path/to/$uploadFileName")
]);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($request);
curl_close($request);
a.xyz.com应该然后接受文件并继续保存它。如果使用修身,以同样的方式作为b.xyz.com确实
...
$newfile->moveTo("/path/to/$uploadFileName");
或使用PHP的核心功能
// Server A
if (!empty($_FILES["file"]) && !empty($_FILES["file"]["tmp_name"])) {
// Move file to correct position on A
$uploadFileName = basename($_FILES["file"]["name"]);
move_uploaded_file($_FILES["file"]["tmp_name"], "/path/to/$uploadFileName");
}
答
通常域或子域被限制在自己的网络空间,所以你不能读取或写入其他域的文件。该设置是cal_b open_basedir。
你必须设置在你的虚拟主机配置,但也有其他的方式,就像一个.htacces将它设置文件,如果你的主机托管服务提供商允许它: How can I relax PHP's open_basedir restriction?
感谢您的评论。我想你错过了一个观点。我会将我的文件上传到('http://b.xyz.com/upload');第一。然后我必须将其上传到a.xyz.com。 –
好吧,通过反转端点来做同样的事情。将它从B张贴到A,然后在A上将文件移到正确的位置。 – anatoli
我尝试颠倒。但它不起作用。我是否需要更改服务器中的任何权限? –