Как я могу загрузить BLOB-объект в Azure, используя подпись общего доступа с помощью PHP?

Я использую Azure php SDK, и теперь у меня есть подпись SAS, которую я получаю из приложения. Как я могу загрузить файл в BLOB-объект, используя SAS (подпись общего доступа).

0

Решение

Если у вас есть токен SAS и если у него есть разрешение на запись большого двоичного объекта в вашу учетную запись хранилища Azure, вы можете использовать токен SAS для загрузки файлов непосредственно в хранилище Azure без Azure Storage SDK для PHP.

Я предполагаю, что у вас есть правильная строка запроса SAS с подписью, которая должна быть похожа на:
?sv=2015-04-05&ss=bt&srt=sco&sp=w&st=2016-09-01T01%3A54%3A00Z&se=2016-09-02T01%3A54%3A00Z&sig=AQ%2F1yL8bt0AQzoYwtQmTUR6UKkJPC4PXg%2BxysdlkMoE%3D

Тогда вы используете cUrl создать запрос API REST в хранилище Azure для загрузки вашего файла,

$sas= '?sv=2015-04-05&ss=bt&srt=sco&sp=rwl&st=2016-09-01T01%3A54%3A00Z&se=2016-09-02T01%3A54%3A00Z&sig=To%2BITizcZWTgr4I6o9BI%2Bdv34CBkuhV5%2BSEQXnaJr%2B0%3D';

$endpoint = 'https://<storage_account>.blob.core.windows.net';
$container = 'test';
$blob = 'test.png';
$url = $endpoint.'/'.$container.'/'.$blob.$sas;

$uploadfile ="test.PNG";
$content = file_get_contents($uploadfile);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('x-ms-blob-type: BlockBlob','Content-Length: ' . strlen($content)));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,$content);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response  = curl_exec($ch);
curl_close($ch);

Вы можете обратиться к https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx для получения дополнительных сведений о API REST для размещения больших двоичных объектов в хранилище Azure.

1

Другие решения

наш Учебник по PHP для BLOB-объектов показывает, как создать строку подключения, а затем загрузить BLOB-объект.

Вы можете использовать SAS в качестве учетных данных для вашей строки подключения. Формат строки подключения (разрывы строк включены только для удобства чтения):

BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken

Посмотри пожалуйста Создайте строку подключения, используя подпись общего доступа для получения дополнительной информации и примеров.

0

По вопросам рекламы [email protected]