我们有一个天蓝色的 blob 存储,并启用了日志记录。我可以使用管理门户查看这些日志并下载 blob。但现在我尝试使用客户端 api 列出这些日志。大致意思是:
let account = new CloudStorageAccount(credentials, true)
let client = account.CreateCloudBlobClient()
let container = client.GetContainerReference "$logs"
container.ListBlobs()
Run Code Online (Sandbox Code Playgroud)
但这会引发网络异常代码400 Bad Request。我可以。但是,在此客户端上列出来自其他容器的 blob。我知道我需要对此容器进行身份验证,但我正在使用凭据的主访问密钥。那么为什么我无法获取 $logs blob?
谢谢
我正在构建一个应用程序,需要存储大量(250,000 左右)的小文件(2MB - 10MB)。我想为此使用 Azure 存储,因为其余相关系统都在 Azure 上。每个文件都有一个唯一的名称(可能是 GUID)。我有点不确定的是 BLOB 与文件是如何对应的。因为我知道每个文件都将被唯一命名,所以我可以/应该只将每个 blob 一个文件存储在单个容器中吗?
我仍在了解 Azure 存储概念,所以很抱歉,如果我太天真了。
我在Blob容器中的azure上有图像文件.所有文件都有唯一的名称.我不得不在名称上搜索这些图像文件,而不需要扩展.例如我有文件:123.PNG 345.jpg 122.JPG
当前代码可以搜索我是否提供文件的完整名称,例如123.PNG.如何通过123传递它.
代码:ID作为参数传递,它是blob中的文件名:
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("images");
container.CreateIfNotExists();
var blockBlob = container.GetBlockBlobReference(id);
blockBlob.FetchAttributes();
byte[] downloadedImage = new byte[blockBlob.Properties.Length];
blockBlob.DownloadToByteArray(downloadedImage, 0);
var imageBase64 = Convert.ToBase64String(downloadedImage);
Run Code Online (Sandbox Code Playgroud) 我们将应用程序日志Azure BLOB存储在存储中。我们目前正在使用文件的完整 URI 下载文件。每次Azure BLOB更改设置时,文件名也会更改。所以我们收到错误,因为文件不存在。
建议一种从目录中使用文件扩展名获取文件的方法,而无需在 UI 中使用文件名。
我已经实现了一个 EventGrid 触发器来响应 Blob 存储事件,其逻辑简化如下:
public static async void Run(
JObject eventGridEvent,
TraceWriter log,
ExecutionContext context)
{
string eventContent = ParseEvent(eventGridEvent);
HttpClient client = GetProxyClient();
HttpResponseMessage response = await client.GetAsync("blabla/" + eventContent);
string responseContent = await response.Content.ReadAsStringAsync();
log.Info("Here is the response :" + responseContent);
}
Run Code Online (Sandbox Code Playgroud)
外部 API 响应时间不长(1 秒或更短),我的主机配置设置为默认值(因此允许无限数量的并发调用)。
同时添加多个 blob(从 2 个 blob 开始)时,我在日志中收到了大量重复事件(脚本正在快速地一个接一个地上传 blob,中间没有等待时间)。
我觉得这可能是因为我从不承认接收到事件,而且我不知道是否应该在我的代码中执行此操作,或者 EventGrid 触发器是否会自动执行此操作。
确认事件处理的逻辑应该在 EventGrid 触发器(Http 200 响应)中实现还是自动处理?
如果不是,我应该仍然收到重复的事件吗?通常,在上传单个 blob 时,我会收到 3-4 次事件。
我问这个问题的原因是,当使用 Http 触发器并返回 400 响应时,我也会得到重复的事件,这是有道理的,因为我没有承认正确处理了事件。但是,当我返回 200 响应时,我不会收到重复的事件。
谢谢
在尝试访问 Azure blob 文件夹的所有文件时,获取示例代码container.ListBlobs();但它看起来像旧的。
旧代码: container.ListBlobs();
新代码尝试: container.ListBlobsSegmentedAsync(continuationToken);
我正在尝试使用以下代码:
container.ListBlobsSegmentedAsync(continuationToken);
Run Code Online (Sandbox Code Playgroud)
文件夹是这样的:
Container/F1/file.json
Container/F1/F2/file.json
Container/F2/file.json
Run Code Online (Sandbox Code Playgroud)
寻找更新版本以从 Azure 文件夹中获取所有文件。任何示例代码都会有所帮助,谢谢!
我已经按照Microsoft 教程处理基于 Azure 存储中创建的 blob 的事件。
事件正在触发,但处理图像的事件代码被绕过,因为 EventGrid 事件未填充输入流参数。这应该通过 blob(图像文件)的路径进行处理。
public static async Task Run(
[EventGridTrigger]EventGridEvent eventGridEvent,
[Blob("{data.url}", FileAccess.Read)] Stream input,
ILogger log)
{
try
{
log.LogInformation("Entered Thumbnail Function ..");
if (input != null)
{ //doesn't get to here ..
Run Code Online (Sandbox Code Playgroud)
每次事件触发的日志是
2018-11-15T05:33:41.096 [Information] Executing 'Thumbnail' (Reason='EventGrid trigger fired at 2018-11-15T05:33:41.0781270+00:00' ..
2018-11-15T05:33:41.096 [Information] Entered Thumbnail Function
2018-11-15T05:33:41.096 [Information] Executed 'Thumbnail' (Succeeded,
2018-11-15T05:33:41.096 [Information] Executing 'Thumbnail' (Reason='EventGrid trigger fired at 2018-11-15T05:33:41.0781270+00:00',
2018-11-15T05:33:41.096 [Information] Entered Thumbnail Function
2018-11-15T05:33:41.096 [Information] Executed …Run Code Online (Sandbox Code Playgroud) 我正在使用 Azure blob 存储来存储我的所有图像和视频。我已经实现了上传和获取功能,并且运行良好。我在加载视频时遇到 1 个问题,因为当我使用在 Azure blob 存储上上传该视频后生成的 url 时,它会先下载所有内容,然后再将其呈现给用户。因此,如果视频大小为 100 mb,它将下载所有 100 mb,直到用户将无法看到视频。
我做了很多研发,才知道在渲染视频时,我需要获取部分内容(状态 206)而不是一次获取整个视频。添加请求头“Range:bytes-500”后,我尝试点击博客网址,但它仍在下载整个内容。因此,我检查了一些开源视频 URL,并尝试点击视频 URL 和“Range”请求标头,它成功地给出了 206 响应状态,这意味着它正确地给了我部分内容而不是完整视频。
我读了一些论坛,他们说 Azure 存储支持部分内容概念,需要从属性中启用它。但是我已经检查了 Azure 存储帐户下的所有选项,但没有找到任何可以启用此功能的选项。
任何人都可以帮我解决这个问题,或者我需要启用 Azure 门户上的任何内容吗?这是我从一个星期以来一直在为此进行研发的事情。任何帮助将非常感激。
谢谢!注意安全。
rendering azure video-streaming azure-storage-blobs azure-blob-storage
由于 azure-storage-blob 新更新,blockblobservice 折旧了
如何检查 blob 是否存在?
此答案不适用于新版本的 azure-storage-blob Faster Azure blob name search with python?
我在 GitHub 上发现了这个问题:https : //github.com/Azure/azure-sdk-for-python/issues/12744
我查看了以下链接以将字符串上传到 azure blob。我的任务要求不允许我将字符串存储为文件。
有没有办法直接从 C# 应用程序将文件写入 Azure Blob 存储?
它在 WindowsAzure.Storage 中使用 CloudStorageAccount,根据此链接已弃用
我正在尝试使用 Azure.Storage.Blobs 库。然而,根据这个微软文档,不再有 UploadString 方法
有什么建议吗?谢谢