尝试使用PHP SDK将csv从远程URL上传到azure存储。我似乎一直在犯这个错误。我没有使用curl的SDK尝试过,我仍然得到同样的错误。
`PUT resulted in a `403 Server failed to authenticate the request.
Make sure the value of Authorization header is formed correctly including the signature.` response:
<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate (truncated...)
in C:\wamp64\www\azurescript\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php on line 113
这是我正在使用的PHP代码:
<?php
require_once 'vendor/autoload.php';
use MicrosoftAzure\Storage\Common\ServicesBuilder;
use MicrosoftAzure\Storage\Common\ServiceException;
use MicrosoftAzure\Blob\Models\SetBlobPropertiesOptions;
$key = base64_encode("abc");
$connectionString = "DefaultEndpointsProtocol=https;AccountName=username;AccountKey={$key}";
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);
// Grab the csv from the remote url
$csv = fopen("http://www.xxxxx.com/wp-cron.phpexport_hash=yyyyyy&export_id=1&action=get_data", "r");
$blobName = "test";
try {
// Upload the blob
$blobRestProxy->createBlockBlob("container", $blobName, $csv);
}
catch(ServiceException $e){
// Errors
$code = $e->getCode();
$errorMessage = $e->getMessage();
}
似乎不是这样的。一些指导会很好
答案 0 :(得分:0)
该错误与403 auth失败有关。请确保:
答案 1 :(得分:0)
身份验证问题与您的密钥未正确设置有关。不确定为什么你决定对它进行编码,但是......你需要完全按照它提供的方式使用存储访问密钥。
实际上,整个连接字符串已经为您构建;不需要自己构建它。