如何上传一个文件到另一个服务器在slim3 php


How to upload a file into another server in slim3 php

我使用silm3作为我的REST API框架,并遵循此从API编写我的文件上传脚本。

我目前运行我的web应用程序在a.xyz.com和我的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应该接受该文件并继续存储它。如果使用Slim,就像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");
}

域名或子域名通常被限制在自己的网站空间,所以你不能读取或写入其他域名的文件。设置为调用open_basedir。

你必须在你的vhost配置中设置它,但也有其他方法,比如在你的主机允许的情况下用。htacces文件设置它:如何放宽php的open_basedir限制?