2016-08-24 12 views
2

私はREST APIフレームワークとしてsilm3を使用しており、thisに続いてAPIからファイルアップロードスクリプトを書きました。slim3 phpの別のサーバーにファイルをアップロードする方法

現在、私のウェブアプリケーションはa.xyz.comで、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

通常、ドメインやサブドメインが、自分のウェブスペースに制限されている、あなたがすることはできませんので、他のドメインのファイルを読み書きする。設定はcalles open_basedirです。

あなたのバーチャルホストの設定でそれを設定する必要がありますが、あなたのホスティング事業者がそれを許可する場合.htaccesファイルとそれを設定するなどの他の方法もあります:あなたのコメントについて How can I relax PHP's open_basedir restriction?

関連する問題