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 方法。

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

对于权限,您需要提供 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 - 通过PID获取进程名

node.js - Azure 构建上的 JavaScript 堆内存不足

azure - QuotaExceededException : The remote server returned an error: (403) Forbidden. 由于命名空间 XXX 受到限制,请求被终止

azure - 获取 CloudBlob.DownloadToFileParallelAsync 的进度

c# - Azure Blob 容器名称可以有多长?

node.js - 整个存储帐户的 Azure 共享访问签名

python - 在本地设置 Bluemix VCAP_SERVICES 环境变量以便我可以在本地进行开发?

python - 聚合值与 pandas 中的相应计数

python - 使用 numpy 进行 3D 图像压缩

sql-server - 如何将 SQL LIKE '%value%' 运算符与 Azure Functions SQL 绑定(bind)结合使用?