标签: azure-blob-storage

我如何(以编程方式)获得Azure Blob允许的最大大小?

有没有办法以编程方式检索Azure Blob 的最大允许大小?还有blob中的块?

c# azure azure-storage-blobs azure-blob-storage

8
推荐指数
1
解决办法
565
查看次数

NameError: 名称“dbutils”未在 pyspark 中定义

我正在 databricks 云中运行 pyspark 作业。作为这项工作的一部分,我需要将一些 csv 文件写入数据块文件系统(dbfs),并且我还需要使用一些 dbutils 本机命令,例如,

#mount azure blob to dbfs location
dbutils.fs.mount (source="...",mount_point="/mnt/...",extra_configs="{key:value}")
Run Code Online (Sandbox Code Playgroud)

一旦文件被写入挂载目录,我也试图卸载。但是,当我直接在 pyspark 作业中使用 dbutils 时,它失败了

NameError: name 'dbutils' is not defined
Run Code Online (Sandbox Code Playgroud)

我应该导入任何包以在 pyspark 代码中使用 dbutils 吗?提前致谢。

pyspark-sql azure-blob-storage databricks

8
推荐指数
2
解决办法
6836
查看次数

当函数发布到云时,阻止 Azure blob 触发器函数在现有 blob 上触发

我有一个在 blob 触发器上启动的 Azure 函数。有趣的是,如果我将此 Azure Function 的更新版本发布到云,并且如果已经存在 Blob,则将在这些已存在的 Blob 上触发 Azure Function。

这不是我想要的功能。相反,我希望新发布的 Azure 函数仅在新上传的 blob 上触发,而不是在已存在的 blob 上触发。如何禁用对现有 blob 的触发?

triggers azure azure-storage-blobs azure-blob-storage azure-functions

8
推荐指数
1
解决办法
2459
查看次数

Azure Blob 存储 V2 不再提供内容处置标头

我对 Azure 博客存储 V2 中文件的“内容处置”blob 属性有疑问。

我在 Azure 门户中使用 Azure 存储资源管理器 1.6.2(参见屏幕截图)asn 将文件 howto-201901.pdf 的此属性配置为“attachment; filename=howto.pdf”。该属性在文件中设置,但在下载时不作为标头信息提供。

用以前的存储V1,是没有问题的。如果我下载了文件 howto-2010901.pdf,则 http 标头内容处置已设置,并且浏览器下载了该文件,就像我的配置 howto-pdf 一样。

但自从两三个月以来,也许自从我升级到存储 V2 以来,这个功能就不起作用了。浏览器以原始名称下载文件。

有没有人有信息可以帮助我解决这种行为?

最佳蒂诺

在此输入图像描述

azure content-disposition azure-storage azure-blob-storage

8
推荐指数
2
解决办法
2356
查看次数

如果不存在,则在 azure 存储中创建 blob 容器

我正在尝试在 python 中的 azure 存储中创建 blob 容器。我正在使用MSDN提供的文档将 azure blob 存储集成到我的 python 程序中。

这是代码:

# Quick start code goes here
connectStr = <connString>
blobServiceClient = BlobServiceClient.from_connection_string(connectStr)
containerName = "quickstart-azureStorage"
localFileName = "quickstart-1.txt"
blobClient = blobServiceClient.create_container(containerName)
Run Code Online (Sandbox Code Playgroud)

create_container()第一次创建 blob 容器,但第二次给我错误。

如果不存在,我想创建 blob 容器。如果存在,则使用现有的 blob 容器

我正在使用 azure 存储库版本 12.0.0。IEazure-storage-blob==12.0.0

我知道我们可以使用以下代码为该容器中存在的 blob 执行此操作,但我没有找到任何用于创建容器本身的内容。

检查 blob 是否存在:

blobClient = blobServiceClient.get_blob_client(container=containerName, blob=localFileName)
if blobClient:
    print("blob already exists")
else:
     print("blob not exists")
Run Code Online (Sandbox Code Playgroud)

例外:

RequestId:<requestId>
Time:2019-12-04T06:59:03.1459600Z
ErrorCode:ContainerAlreadyExists
Error:None
Run Code Online (Sandbox Code Playgroud)

python azure azure-storage azure-storage-blobs azure-blob-storage

8
推荐指数
2
解决办法
9390
查看次数

上传到 Azure Blob 存储时设置内容类型

我正在使用 Azure Blob 存储客户端库上传静态站点。

        blob_service_client = BlobServiceClient.from_connection_string(az_string)
        blob_client = blob_service_client.get_blob_client(container=container_name, blob=local_file_name)
        print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)

        with open('populated.html', "rb") as data:
            test = blob_client.upload_blob(data, overwrite=True)

Run Code Online (Sandbox Code Playgroud)

这是有效的,但 HTML 文件正在下载而不是显示。这是因为内容类型错误:Content-Type: application/octet-stream.

有什么办法可以设置这个使用upload_blob

更新:

为了让这个工作,我需要这个:


my_content_settings = ContentSettings(content_type='text/html')
blob_client.upload_blob(data, overwrite=True, content_settings=my_content_settings)

Run Code Online (Sandbox Code Playgroud)

python azure azure-storage azure-blob-storage

8
推荐指数
1
解决办法
3723
查看次数

Azure 存储帐户:Blob 服务 (SAS) 连接检查失败

我们在 Azure 上创建了一个新的存储帐户。而且,当我们执行连接检查时,它显示 Blob 服务 (SAS) 端点不可访问,并显示消息“此存储帐户不允许公共访问”。状态码是409。

存储帐户从V1升级到通用V2。这是导致这个问题的原因吗?

连接检查失败

此外,“共享访问签名”中的“生成 SAS 和连接字符串”按钮被禁用并显示为灰色。

生成 SAS 和连接字符串

我们如何创建并启用这个端点?到目前为止,我的搜索没有指出任何通过门户创建/启用此功能的解决方案。是否只能通过 REST API 实现?

Blob 服务 (SRP) 检查、共享访问签名检查成功。没有专用端点,创建了防火墙,并且允许从“所有网络”进行访问。

目前,通过 API 从客户端使用存储帐户密钥访问 blob 失败,错误代码为 403。

此外,我们还能够成功地从与存储帐户的“连接字符串”连接的“Microsoft Azure 存储资源管理器”获取 blob 详细信息。

额外细节 :

我还可以看到“Blob 服务 (Azure AD)”端点不可访问,但“队列服务 (Azure AD)”端点可以访问。

Azure AD Blob 服务

azure azure-blob-storage azure-sas

8
推荐指数
1
解决办法
1万
查看次数

在浏览器中显示 Azure blob 图像文件并且不强​​制下载

这个问题不久前已经被问过。我希望今天的答案有所不同。

我正在使用 Azure blob 存储来保存网站的图像 (jpg)。我直接链接到标签中的文件<img>,效果很好(已启用匿名访问)。问题是,如果用户单击图像(直接链接到文件),他们将被迫下载它并且无法在浏览器中查看它。

有没有办法设置 Blob 存储的标头,以允许直接在浏览器中查看而不强制下载。

更新1:

基于此How can I view an image from Azure Blob Storage,而不是下载它?这个https://social.msdn.microsoft.com/Forums/windowsapps/en-US/b8759195-f490-420b-a587-2bb614366ad2/embedding-images-from-blob-storage-in-ssrs-report-does-不行

我发现我没有设置内容类型,这导致了问题。我需要将其设置为"image/jpeg". 不过我不太确定该怎么做。这是我用来存储图像的代码。

using Microsoft.Azure.Storage.Blob

/// <summary>
/// Save a file to azure blob storage.
/// </summary>
/// <param name="name">Name of file</param>
/// <param name="file">filestream</param>
/// <param name="ct">Cancellationtoken</param>
public async Task<bool> SaveFile(Stream fileStream, string fileName, CancellationToken ct)
{
   CloudBlockBlob cloudBlockBlob = _blobContainer.GetBlockBlobReference(fileName);

   fileStream.Position = 0;
   await cloudBlockBlob.UploadFromStreamAsync(fileStream, ct);

   return …
Run Code Online (Sandbox Code Playgroud)

azure azure-blob-storage

8
推荐指数
1
解决办法
3470
查看次数

无法从 BlobItem 检索元数据

从 Azure 存储获取 Blob 时,我很难从 BlobItem 获取元数据。

我肯定错过了一些东西,但无法弄清楚是什么或在哪里

这是简单的代码块,我从测试容器中获取 BlobItems。

一切都很好,var properties因为我成功获取了元数据,但问题在于当我尝试在 while 循环内获取 blob 项的数据时,它返回 null

        var containerClient =  _blobServiceClient.GetBlobContainerClient(AzureStorageHelpers.BlobContainers.Files);
        var properties = await containerClient.GetPropertiesAsync();

        var blobs = containerClient.GetBlobsAsync();
        var enumerator = blobs.GetAsyncEnumerator();

        var blobList = new List<BlobItem>();
        try
        {
            while (await enumerator.MoveNextAsync())
            {
                var blobItem = enumerator.Current;
                var metaData = enumerator.Current.Metadata;
                var dwaw = blobItem.Metadata["Name"];
                blobList.Add(blobItem);
            }
        }
        finally
        {
            await enumerator.DisposeAsync();
        }
Run Code Online (Sandbox Code Playgroud)

我得到空值,在 Azure 上我可以清楚地看到我已经定义了一些测试元数据属性。

在此输入图像描述

我正在使用NET.Core 2.2和 N uget Azure.Storage.Blobs(12.5.1)

c# azure azure-blob-storage asp.net-core

8
推荐指数
1
解决办法
2615
查看次数

使用 python 从 Azure blob 读取 Json 文件?

我需要从 Azure 中的 blob 容器读取 JSON 文件,以便在 JSON 文件之上进行一些转换。我看过一些文档和 StackOverflow 答案,并开发了一个 python 代码来从 blob 中读取文件。

我已尝试使用 Stackoverflow 答案之一中的以下脚本来读取 JSON 文件,但出现以下错误

“TypeError:JSON 对象必须是 str、bytes 或字节数组,而不是 BytesIO”

我是 python 编程新手,所以不确定代码中的问题。我尝试使用 download_stream.content_as_text() 但文件读取文件时没有任何错误。

from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
from io import BytesIO
import requests
from pandas import json_normalize
import json

filename = "sample.json"

container_name="test"
constr = ""

blob_service_client = BlobServiceClient.from_connection_string(constr)
container_client=blob_service_client.get_container_client(container_name)
blob_client = container_client.get_blob_client(filename)
streamdownloader=blob_client.download_blob()

stream = BytesIO()
streamdownloader.download_to_stream(stream)
# with open(stream) as j:
#      contents = json.loads(j)
fileReader = json.loads(stream)

print(filereader)
Run Code Online (Sandbox Code Playgroud)

python json azure-blob-storage

8
推荐指数
1
解决办法
1万
查看次数