2016-08-24 73 views
2

我使用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"); 

用于保存当前子域中的文件。但是我没有把它上传到另一个子域。

我在网上搜索,但没有找到任何线索如何做到这一点。

回答

1

在正确的位置上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"); 
} 
+0

感谢您的评论。我想你错过了一个观点。我会将我的文件上传到('http://b.xyz.com/upload');第一。然后我必须将其上传到a.xyz.com。 –

+0

好吧,通过反转端点来做同样的事情。将它从B张贴到A,然后在A上将文件移到正确的位置。 – anatoli

+0

我尝试颠倒。但它不起作用。我是否需要更改服务器中的任何权限? –

0

通常域或子域被限制在自己的网络空间,所以你不能读取或写入其他域的文件。该设置是cal_b open_basedir。

你必须设置在你的虚拟主机配置,但也有其他的方式,就像一个.htacces将它设置文件,如果你的主机托管服务提供商允许它: How can I relax PHP's open_basedir restriction?

相关问题