使用 Azure 存储 PHP SDK 时出现“其中一个请求输入超出范围”

Posted

技术标签:

【中文标题】使用 Azure 存储 PHP SDK 时出现“其中一个请求输入超出范围”【英文标题】:"One of the request inputs is out of range" when using Azure Storage PHP SDK 【发布时间】:2015-07-24 11:27:14 【问题描述】:

我正在运行这段代码

require_once 'windowsazure\windowsazure.php';

use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Blob\Models\CreateContainerOptions;
use WindowsAzure\Blob\Models\PublicAccessType;
use WindowsAzure\Common\ServiceException;

try 

$connectionString = "DefaultEndpointsProtocol=http;AccountName=xxx;AccountKey=yyyy";

// Create blob REST proxy.
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);

$createContainerOptions = new CreateContainerOptions();

$createContainerOptions->setPublicAccess(PublicAccessType::CONTAINER_AND_BLOBS);


// Set container metadata
$createContainerOptions->addMetaData("key1", "value1");
$createContainerOptions->addMetaData("key2", "value2");

// List blobs.
$blob_list = $blobRestProxy->listBlobs("mycontainer");
$blobs = $blob_list->getBlobs();

foreach($blobs as $blob)

    echo $blob->getName().": ".$blob->getUrl()."<br />";


// Create container.
$blobRestProxy->createContainer("phpcontainer", $createContainerOptions);


catch(ServiceException $e) 
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code . ": " . $error_message . "<br/>";

但是会报如下错误

遇到服务异常。 400:失败:代码:400 值:其中之一 请求输入超出范围。详细信息(如果有):OutOfRangeInputOne 的请求输入超出范围。请求编号:xxxxxx 时间:2015-05-13T08:47:18.0943278Z

当谈到向 Azure 存储发送请求的第一行时

$blob_list = $blobRestProxy->listBlobs("mycontainer");

我已经通过 pear (http_request2, mail_mime, mail_mimedecode) 安装了 Azure PHP SDK 的依赖,并将它们放在默认位置 c:\php\pear\

而我使用的connectionstring应该是正确的。

我错过了什么?

谢谢

【问题讨论】:

您的代码究竟在哪里遇到了错误? 这一行 $blob_list = $blobRestProxy->listBlobs("mycontainer"); 【参考方案1】:

原来我在此处屏蔽的连接字符串中错误地指定了非法帐户名,更具体地说,我在帐户名中使用了大写但实际上Azure容器名称不允许包含大写,并且我的PHP项目没有添加大写转小写的转换方法...

无论如何,希望遇到类似问题的人可以先检查帐户名称,容器名称和blob名称。

谢谢

【讨论】:

【参考方案2】:

https://Your_blob_url.blob.core.windows.net/containerImage2-f110ea8t-5ada-42f2-8f64-2614c9c45df0 我像这样传递到 url,我没有分隔容器然后我改为 https://Your_blob_url.blob.core.windows.net/container/Image2-f110ea8t-5ada-42f2-8f64-2614c9c45df0 它对我有用...

【讨论】:

以上是关于使用 Azure 存储 PHP SDK 时出现“其中一个请求输入超出范围”的主要内容,如果未能解决你的问题,请参考以下文章

使用 .NET SDK 从 Azure 文件共享下载空文件时出现 InvalidRange 错误

尝试上传文件时出现异常

Azure 功能:访问存储帐户时出现 403 错误

在从 blob 存储中获取文件并传递给模型进行预测时出现 azure aci webservice 的超时错误

上传到 Azure 存储时出现内部 500 错误

使用 Azure 表存储时出现“未为实体中的所有属性指定值”错误