蟒蛇generate_signed_query_string BLOB返回错误的查询字符串
问题描述:
我想分享在使用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
。
我应该如何解决问题?
答
它看起来像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上提交错误,以便负责维护代码的团队可以修复它。