首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改Azure存储Blob中文件的内容类型

更改Azure存储Blob中文件的内容类型
EN

Stack Overflow用户
提问于 2014-12-02 23:16:09
回答 1查看 6.3K关注 0票数 2

我只使用Microsoft Azure存储,不使用其他Azure产品/服务。我通过ftp类型客户端(GoodSync)将文件上传到我的存储Blob,在文件已经在blob中之后,我需要根据文件扩展名更改所有文件的内容类型。我已经环顾了四周,没有他们的PowerShell VPS,我还没有发现如何做到这一点。我的选择是什么?我如何实现这一点?我真的需要在这里一步一步来。

EN

回答 1

Stack Overflow用户

发布于 2021-01-27 06:33:11

这是最新Azure.Storage.Blobs软件开发工具包的更新版本。我正在使用.Net 5和控制台应用程序。

代码语言:javascript
复制
using Azure.Storage.Blobs.Models;
using System;
using System.Collections.Generic;
using System.IO;

var contentTypes = new Dictionary<string, string>()
{
    {".woff", "font/woff"},
    {".woff2", "font/woff2" }
};

var cloudBlobClient = new BlobServiceClient("connectionstring");
var cloudBlobContainerClient = cloudBlobClient.GetBlobContainerClient("fonts");
await cloudBlobContainerClient.CreateIfNotExistsAsync();

var blobs = cloudBlobContainerClient.GetBlobsAsync();

await foreach (var blob in blobs)
{
    var extension = Path.GetExtension(blob.Name);

    contentTypes.TryGetValue(extension, out var contentType);
    if (string.IsNullOrEmpty(contentType)) continue;

    if (blob.Properties.ContentType == contentType)
    {
        continue;
    }

    try
    {
        // Get the existing properties
        var blobClient = cloudBlobContainerClient.GetBlobClient(blob.Name);
        var properties = await blobClient.GetPropertiesAsync();

        var headers = new BlobHttpHeaders { ContentType = contentType };

        // Set the blob's properties.
        await blobClient.SetHttpHeadersAsync(headers);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27252751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档