Swift:listBlobsSegmentedWithContinuationToken方法在Swift示例

时间:2016-05-27 08:49:12

标签: swift azure

我从这个github获得了这段代码:azure-storage-ios/BlobSample/ 我能够创建我的容器并为其添加blob。我证实他们在天蓝色的门户网站上。我正在使用SAS令牌方法:

var containerURL = "https://<mystorage>.blob.core.windows.net/profiles?se=2016-09-05T00%3A00%3A00Z&sp=rw&sv=2015-02-21&sr=c&sig=<mysig>"
var usingSAS = true
self.container = AZSCloudBlobContainer(url: NSURL(string: containerURL)!, error: &error)
// ... later:
blob.uploadFromText(textTextField.text ?? "",  completionHandler: { (error: NSError?) -> Void in

})

但是现在,我正在尝试加载blob但收到一个或多个错误!

func reloadBlobList() {
    self.container.listBlobsSegmentedWithContinuationToken(nil, prefix: nil, useFlatBlobListing: true, blobListingDetails: AZSBlobListingDetails.All, maxResults: 50) { (error : NSError?, results : AZSBlobResultSegment?) -> Void in
        if let error = error {
            print("error code! \(error.code)")
            print("error description! \(error.description)")
        }

我主要收到有关AuthorizationPermissionMismatch的错误

  

错误代码! 3   错误说明! Error Domain = com.Microsoft.AzureStorage.ErrorDomain Code = 3&#34;(null)&#34; UserInfo = {Code = AuthorizationPermissionMismatch,AdditionalErrorDetails = {   },rawErrorData = {length = 279,capacity = 279,bytes = 0xefbbbf3c3f786d6c2076657273696f6e ... 3c2f4572726f723e},OperationContext =,RequestResult =,HTTP Status Code = 403,URLResponse = {URL:https://.blob.core.windows。净/简档SIG =安培; API-版本= 2015年4月5日&安培; SP = RW&安培; SE = 2016-09-05T00%3A00%3A00Z&安培; SV = 2015年2月21日&安培; SR = C&安培; restype =容器&安培; comp = list&amp; maxresults = 50&amp; include = snapshots,metadata,uncommittedblobs,copy} {status code:403,headers {       &#34; Content-Length的&#34; = 279;       &#34;内容类型&#34; =&#34; application / xml&#34 ;;       日期=&#34;星期五,27五月2016 08:12:19 GMT&#34 ;;       Server =&#34; Windows-Azure-Blob / 1.0 Microsoft-HTTPAPI / 2.0&#34 ;;       &#34; X-MS-请求-ID&#34; =&#34; 90746e2f-0001-0114-7eef-b7be1e000000&#34 ;;       &#34; X-MS-版本&#34; =&#34; 2015-04-05&#34 ;;   消息=此请求无权使用此权限执行此操作。   的requestId:90746e2f-0001-0114-7eef-B

我之前生成的密钥具有r / w权限,我能够将blob发布到容器中,我还应该为检索做些什么?

1 个答案:

答案 0 :(得分:1)

  

var containerURL =   &#34; HTTPS:?//.blob.core.windows.net/profiles SE = 2016-09-05T00%3A00%3A00Z&安培;的 SP = RW &安培; SV = 2015年2月21日&安培; SR = C&安培; SIG =&#34;

要在blob容器中列出blob,您需要在SAS中获得List (l)权限。目前,您只有Read (r)Write (w)权限。您是否可以尝试创建一个具有List权限的新SAS?