so, i've downloaded azure sdk php , started emulator. ok.
copy&pasted code microsoft, can create new test container.
require_once 'vendor\autoload.php'; use windowsazure\common\servicesbuilder; use microsoftazure\storage\blob\models\createcontaineroptions; use microsoftazure\storage\blob\models\publicaccesstype; use microsoftazure\storage\common\serviceexception; // create blob rest proxy. $blobrestproxy = servicesbuilder::getinstance()->createblobservice('usedevelopmentstorage=true'); // optional: set public access policy , metadata. // create container options object. $createcontaineroptions = new createcontaineroptions(); // set public access policy. possible values // publicaccesstype::container_and_blobs , publicaccesstype::blobs_only. // container_and_blobs: // specifies full public read access container , blob data. // proxys can enumerate blobs within container via anonymous // request, cannot enumerate containers within storage account. // // blobs_only: // specifies public read access blobs. blob data within // container can read via anonymous request, container data not // available. proxys cannot enumerate blobs within container via // anonymous request. // if value not specified in request, container data // private account owner. $createcontaineroptions->setpublicaccess(publicaccesstype::container_and_blobs); // set container metadata. $createcontaineroptions->addmetadata("key1", "value1"); $createcontaineroptions->addmetadata("key2", "value2"); try { // create container. $blobrestproxy->createcontainer("mycontainer", $createcontaineroptions); } catch (serviceexception $e) { // handle exception based on error codes , messages. // error codes , messages here: // http://msdn.microsoft.com/library/azure/dd179439.aspx $code = $e->getcode(); $error_message = $e->getmessage(); echo $code . ": " . $error_message . "<br />"; }
when run code, nice error message.
404: fail:
code: 404
value: specified resource not exist.
what's wrong this? i'm running out of ideas. firstly had different code didn't work either, try use sample directly ms no luck.
cli shows emulator running , endpoints correct.
i used fiddler capture http request generated sdk, url path /testcontainer?restype=container
. , according rest api guide https://msdn.microsoft.com/en-us/library/azure/dd179468.aspx, url path should /devstoreaccount1/mycontainer?restype=container
.
currently, there workaround develop azure storage on local emulator. can add local account name devstoreaccount1
every time when use container name, e.g.
$blobrestproxy->createcontainer("devstoreaccount1/testcontainer"); $blobrestproxy->createblockblob("devstoreaccount1/testcontainer", "testblob", "test string"); $blobrestproxy->listblobs("devstoreaccount1/testcontainer");
any further concern, please feel free let me know.
Comments
Post a Comment