2013-03-12 65 views
0

我想分享在使用Python SDK私人Azure的Blob存儲容器中的一滴,下面是代碼:蟒蛇generate_signed_query_string BLOB返回錯誤的查詢字符串

try: 
     accss_plcy = AccessPolicy() 
     accss_plcy.start = '2013-03-12' 
     accss_plcy.expiry = '2013-03-13' 
     accss_plcy.permission = 'r' 
     signed_identifier = 'YWJjZGVmZw==' 
     sap = SharedAccessPolicy(accss_plcy, signed_identifier) 
     qry_str = sas.generate_signed_query_string('picture/xxx.jpg','blob', sap) 
    except Exception as ex: 
     abort(400, 'Download blob fail %s'%ex) 
    return sas._convert_query_string(qry_str) 

下面是查詢字符串返回:

st=2013-03-12&se=2013-03-13&sp=r&resource=blob&sig=FI88prUINf58Seg5Nwo6Uj5RP9FxXGZBBSKi7pybmeQ=& 

您可能會注意到,resource=blob,但它應該返回sr=b

我應該如何解決問題?

回答

2

它看起來像SDK中的錯誤。由於Azure SDK的代碼是開源的,因此您可以下載代碼並對此文件進行更改:https://github.com/WindowsAzure/azure-sdk-for-python/blob/master/src/azure/storage/sharedaccesssignature.py。縱觀在該文件的源代碼,您需要更改下面的代碼行(第129):

convert_str += SIGNED_RESOURCE_TYPE + '=' + query_string[SIGNED_RESOURCE] + '&' 

convert_str += SIGNED_RESOURCE + '=' + query_string[SIGNED_RESOURCE] + '&' 

而且我注意到,你傳遞blob作爲在上面的代碼資源類型:

qry_str = sas.generate_signed_query_string('picture/xxx.jpg','blob', sap) 

您將需要通過「b」,而不是「斑點」

​​

我認爲應該這樣做。另外請確保您在Github上提交錯誤,以便負責維護代碼的團隊可以修復它。