python - sas 生成的 blob url 向 azure ocr api 发送错误请求 400

标签 python azure azure-blob-storage azure-sdk-python

我已将一些图像上传到 azure blob 容器,以便我的 azure ocr api 读取图像并发回输出。
我已经使用从 azure 容器中检索了 blob 列表

 blob_service.list_blobs().
现在将这些检索到的 blob 中的每一个都提供给共享访问方法
generate_blob_shared_access_signature(container_name='ocr-images',blob_name=blob.name,permission=PublicAccess.OFF,expiry='se=2015-04-30T02%3A23%3A26Z',start='st=2015-04-29T22%3A18%3A26Z')
共享访问方法的输出是一个 SAS token ,然后将其提供给
blob_service.make_blob_url(container_name='ocr-images',blob_name=blob.name, sas_token=sas)
为每个图像生成 url
传递给 Azure ocr api 时生成的 URL 显示错误

requests.exceptions.HTTPError: 400 Client Error: Bad Request for url:https://westeurope.api.cognitive.microsoft.com/vision/v2.0/ocr?language=unk&detectOrientation=false


但是当从 azure 门户手动生成 url 时,它可以完美运行。有人可以帮我解决这个问题吗?

最佳答案

您收到此错误是因为您使用了 generate_blob_shared_access_signature 方法。不正确。

您传递给此方法的值存在许多问题。

对于 permission ,您需要提供 BlobPermissions 的可能值之一.假设您想阅读 blob 内容,我建议您使用 BlobPermissions.READ允许。

您的开始日期和到期日期都在过去。此外,您只需要指定日期值而不包括 st=se= .

请尝试使用以下代码:

generate_blob_shared_access_signature(container_name='ocr-images',blob_name=blob.name,permission=BlobPermissions.READ,expiry='2019-04-09',start='2019-04-08')

关于python - sas 生成的 blob url 向 azure ocr api 发送错误请求 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576023/

相关文章:

Python 2.6.5 : Divide timedelta with timedelta

azure - 限制 azure blob 上传速度的方法

python - 运行后存在Docker容器且日志中没有错误

c# - 使用 blob StartCopyAsync 时如何获取 azure blob 的更新复制状态

regex - 在 Verizon 中为 Azure CDN 创建重定向规则,将/index.html 添加到 URL 末尾

c# - Windows Azure - Blob 存储初始化 - 授权错误

python - Jython 何时支持 Python 3?

python - 关闭python引用计数输出

Python - 查询元组列表

c# - sendgrid 在 Azure 功能中向多个收件人发送电子邮件失败