1

次の CURL リクエストを使用して、Rackspace Cloud Files にファイルを投稿しています。

$ch = curl_init(trim($rackspace['X-Storage-Url']).'/container/hello');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Auth-Token: '.$rackspace['X-Auth-Token'], 'Content-Length: '.$data['file']['size']));
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, fopen($data['file']['path'], 'r'));
curl_setopt($ch, CURLOPT_INFILESIZE, $data['file']['size']);
curl_setopt($ch, CURLOPT_HEADER, true);
echo curl_exec($ch);

Rackspace のドキュメントに従っていますが、404 Not Foundエラーが発生し、トラブルシューティングの方法がよくわかりません。助言がありますか?

解決

さらに分析した結果、認証後に発行された X-Storage-Url がhttps://storage101.dfw1.clouddrive.com. dfw1はダラスのデータ センターを示していますが、作成したコンテナーはシカゴにありました。これが問題であることを確認するために、ダラスのデータ センターにコンテナーを作成して再試行しましたが、すべて問題なく動作しました。Rackspace にチケットを送信して、デフォルトの保管場所をシカゴに変更しました。すべてが機能しています。

選択した回答で指摘されているように、API の最新バージョン (2.0) を使用していた場合、両方の場所の URL が表示されます。

4

3 に答える 3

2

さらに分析した結果、X-Storage-Url認証後に発行された は であることがわかりましたhttps://storage101.dfw1.clouddrive.comdfw1はダラスのデータ センターを示していますが、作成したコンテナーはシカゴにありました。これが問題であることを確認するために、ダラスのデータ センターにコンテナーを作成して再試行しましたが、すべて問題なく動作しました。Rackspace にチケットを送信して、デフォルトの保管場所をシカゴに変更しました。すべてが機能しています。

于 2013-05-02T18:05:43.473 に答える
2

こちらの API ドキュメントに示されているように、古い v1.0 認証方法を使用しているようです。そうすることで、常にデフォルトの保管場所が返されます。ただし、こちらで説明されている API 認証システムの v2.0では、認証応答には、データ センターごとに 1 つずつ、2 つの異なる Cloud Files エンドポイント URL が含まれます。ただし、これらはどちらも同じ API を指しているため、認証コードを交換すれば、Cloud Files 関連の他のすべてのコードは「正常に機能する」はずです。

于 2013-05-03T13:22:37.670 に答える
0

「container」という名前のコンテナーは、X-Storage-Url が指すリージョンのアカウントの下に既に存在している必要があります。コンテナで 404 が発生する可能性があり、コンテナ内でオブジェクトを作成できません。API への PUT を介して、またはhttp://mycloud.rackspace.com/のコントロール パネルを介してコンテナーを作成できます。

-マーク

于 2013-05-02T17:35:01.897 に答える