Yii2 Azure Flysystem无法保存错误

时间:2016-06-16 08:07:12

标签: php azure yii2 azure-storage flysystem

当我将文件上传到Azure FILE存储时,我收到以下错误:

in 
E:\WAMP\www\myweb\_protected\vendor\microsoft\windowsazure\WindowsAzure\Common\Internal\Http\Url.php at line 74 – WindowsAzure\Common\Internal\Validate::isTrue(false, 'Provided URL is invalid.')

E:\WAMP\www\allure\_protected\vendor\microsoft\windowsazure\WindowsAzure\Common\Internal\RestProxy.php at line 122 – WindowsAzure\Common\Internal\Http\Url::__construct('https://cG9rYXJuYXZpb282mGQ=.blo...')

我的配置文件中的设置是:

'filesystem' => [
            'class' => 'creocoder\flysystem\AzureFilesystem',
            'accountName' => 'azure-accname',
            'accountKey' => 'some-long-key-A==',
            'container' => 'azure-container',
],

最后,我调用的代码是保存文件:

if($file = \yii\web\UploadedFile::getInstance($this, 'attachment'))
{
    $stream = fopen($file->tempName, 'r+');
    Yii::$app->filesystem->writeStream($file->name, $stream);
}

可能有用的其他一些信息

  1. 在yii2高级框架上运行
  2. 网络服务器:Windows 2012上的IIS 8.5
  3. PHP 5.4.5
  4. 用于安装的作曲家
  5. 它是一个天蓝色的文件系统 - 错误似乎为blob.core.windows.net抛出了错误,我将数据保存到file.core.windows.net。我应该在配置/设置中做些什么改变?

1 个答案:

答案 0 :(得分:0)

根据https://github.com/creocoder/yii2-flysystem/blob/master/src/AzureFilesystem.php#L62的源代码,在将存储信息字符串组合到连接字符串之前,它似乎会将存储信息字符串加密为base64编码。这会在您的错误消息'https://cG9rYXJuYXZpb282mGQ=.blo...'中生成奇怪的网址格式。

请尝试将帐户信息设置为以下格式:

...   
'accountName' => base64_decode('azure-accname'),
'accountKey' => base64_decode('some-long-key-A=='),
...

如有任何疑问,请随时告诉我。