首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php从子目录中获取azure blob文件

使用php从子目录中获取azure blob文件
EN

Stack Overflow用户
提问于 2020-11-30 18:55:13
回答 1查看 219关注 0票数 1

我想尝试从blob存储中获取文件。我成功地从没有子目录的blob存储中获取文件,但是当我尝试从子目录中获取文件时,它不起作用。对于子目录,我使用$blobName like that test/1.png,其中test是文件夹名,1.jpg是文件名。

代码语言:javascript
复制
<?php

$storageAccount = 'XXXXXXX';
$containerName = 'XXXXXXXX';
$blobName = 'test/1.png';
$account_key = 'XXXXXXXXXX';

$date = gmdate('D, d M Y H:i:s \G\M\T');
$version = "2019-12-12";

$stringtosign = "GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:". $date . "\nx-ms-version:".$version."\n/".$storageAccount."/".$containerName."/".$blobName;
$signature = 'SharedKey'.' '.$storageAccount.':'.base64_encode(hash_hmac('sha256', $stringtosign, base64_decode($account_key), true));
echo "\n\n" . $signature;

$header = array (
    "x-ms-date: " . $date,       
    "x-ms-version: " . $version,       
    "Authorization: " . $signature
);

$url="https://$storageAccount.blob.core.windows.net/$containerName/$blobName";
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header);
curl_exec ( $ch );
$result = curl_exec($ch);
echo "\n\n" . $result;

if(curl_errno($ch)){
    throw new Exception(curl_error($ch));
}

file_put_contents('D://demo//downloaded.txt', $result); // save the string to a file

curl_close($ch);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-01 10:10:58

我已经在我这边测试了你的代码,但你的代码似乎是正确的,我可以从存储容器中下载我的.jpg文件,它位于某个子目录中:

结果:

我注意到在您的代码中,您正在将.png file内容下载到.txt file中:

代码语言:javascript
复制
file_put_contents('D://demo//downloaded.txt', $result);

也许这就是你没有得到预期结果的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65072219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档