我正在使用azure php SDK,并且我有从应用程序获得的SAS签名,现在我怎样才能使用SAS(共享访问签名)将文件上传到blob。如何使用PHP共享访问签名来上传Azure中的blob?
回答
如果您有SAS令牌,并且您的Azure存储帐户拥有对blob的写入权限,则可以利用SAS令牌将文件直接上传到Azure存储,而无需Azure存储SDK for 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
创建REST API请求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);
有关将Blob放入Azure存储的REST API的更多详细信息,请参阅https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx。
我们的PHP tutorial for blobs显示了如何创建一个连接字符串,然后上传一个blob。
您可以使用SAS作为连接字符串的凭证。连接字符串格式(只包括为便于阅读,换行):
BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken
请参阅Create a connection string using a shared access signature的更多信息和示例。
你能提供特定的语法吗?我试过做BlobEndpoint = [myendpoint]; SharedAccessSignature = [我的SAS令牌],并得到一个错误“在预期的配置设置键找不到设置键'SharedAccessSignature':UseDevelopmentStorage DevelopmentStorageProxyUri DefaultEndpointsProtocol AccountName AccountKey BlobEndpoint QueueEndpoint TableEndpoint in vendor/microsoft/azure-storage/src/Common/Internal/ServiceSettings.php“ –
- 1. Azure共享访问签名
- 2. 在img标签使用共享访问签名的URI Azure的Blob存储
- 3. 没有api的Azure Blob共享访问签名
- 4. Azure Blob容器共享访问签名到期
- 5. Azure BLOB BLOB共享访问签名在BLOB级别,而不是容器
- 6. 上传到Azure的Blob存储与共享访问密钥
- 7. azure共享访问签名创建
- 8. Azure帐户共享访问签名
- 9. Azure共享访问签名(SAS)
- 10. Windows Azure - 共享访问签名(SAS URI)
- 11. 使用wget或curl下载带共享访问签名的Azure Blob
- 12. 使用共享访问签名的Azure Blob存储虚拟目录
- 13. 如何撤销Azure SDK中的共享访问签名
- 14. 撤销单个Blob上的共享访问签名
- 15. 使用共享访问签名的Azure CDN
- 16. 为C#中的块blob生成共享访问签名
- 17. 使用Azure SDK中的BlobService.getBlobURL()为Node.js生成Azure共享访问签名
- 18. Azure共享访问签名限制访问
- 19. Azure事件中心共享访问签名重用
- 20. 如何使用Azure Python SDK为容器创建共享访问签名
- 21. Azure共享访问签名是否意味着任何人都可以访问我的Blob?
- 22. 如何使用ruby使用安全访问签名来访问和写入Azure blob的内容?
- 23. Azure桌面服务共享访问签名不可用
- 24. 如何在Azure Blob存储中设置超过1年的共享访问签名
- 25. 如何使用Python构建共享访问签名URL?
- 26. 如何使用C#构建共享访问签名URL?
- 27. 整个存储帐户的Azure共享访问签名
- 28. Azure共享访问签名数量的实际限制?
- 29. Azure blob存储共享访问策略应用/删除
- 30. 使用共享访问签名删除blob内容而不删除权限
谢谢@Gary Liu - MSFT我正在寻找这个下一次我会问完全详细的问题..并再次感谢:) –