You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Azure Blob存储自动设置Brotli编码(Portal浏览器上传)

通过Azure Portal上传Blob时自动设置Brotli压缩编码的方案

Azure Portal的浏览器上传功能本身不会自动识别.br文件并设置Content-Encoding为'br'——它仅能根据文件扩展名自动映射Content-Type(比如.js对应application/x-javascript),但编码头需要额外配置。以下是几种无需手动操作的自动化解决方案:

方案一:用Azure Function自动处理上传的Blob

创建一个Blob触发的Azure Function,只要有文件上传到指定容器,就自动检测.br后缀并设置编码头:

  1. 新建Blob存储触发的Function,选择你熟悉的开发语言(如Python/Node.js)
  2. 编写处理逻辑(以Python为例):
import azure.functions as func
from azure.storage.blob import BlobServiceClient

def main(myblob: func.InputStream):
    # 建议用环境变量存储连接字符串,避免硬编码
    conn_str = "<你的存储账户连接字符串>"
    blob_service = BlobServiceClient.from_connection_string(conn_str)
    blob_client = blob_service.get_blob_client(myblob.container_name, myblob.name)

    # 检测.br后缀的文件
    if myblob.name.endswith(".br"):
        # 提取原文件扩展名,匹配对应Content-Type
        original_name = myblob.name[:-3]
        ext_map = {
            "js": "application/javascript",
            "css": "text/css",
            "html": "text/html",
            "json": "application/json"
        }
        content_type = ext_map.get(original_name.split(".")[-1].lower(), "application/octet-stream")
        
        # 设置Content-Encoding和Content-Type
        blob_client.set_http_headers(
            content_encoding="br",
            content_type=content_type
        )
  1. 部署Function后,所有上传到触发容器的.br文件都会自动配置编码头,无需手动操作

方案二:静态网站场景用自定义配置文件

如果你的Blob存储配置了静态网站(使用$web容器),可以添加staticwebapp.config.json文件,通过路由规则自动添加编码头:

在$web容器根目录上传以下配置文件:

{
  "routes": [
    {
      "route": "/*.br",
      "headers": {
        "Content-Encoding": "br"
      }
    }
  ],
  "mimeTypes": {
    ".js.br": "application/javascript",
    ".css.br": "text/css",
    ".html.br": "text/html",
    ".json.br": "application/json"
  }
}

这个方案不需要修改Blob元数据,访问.br文件时会自动带上Content-Encoding: br头,同时修正对应的Content-Type。

方案三:批量上传用AzCopy/PowerShell指定参数

如果是批量上传.br文件,不用Portal手动传,直接用AzCopy或PowerShell命令在上传时直接设置编码:

AzCopy命令示例

azcopy copy "本地路径\*.br" "https://<存储账户名>.blob.core.windows.net/<容器名>" --blob-type BlockBlob --set-content-encoding="br" --set-content-type="application/javascript"

(如果是css.br等其他类型,修改--set-content-type的值即可)

PowerShell脚本示例

$storageAccount = "<存储账户名>"
$container = "<容器名>"
$localFiles = "C:\你的文件路径\*.br"

$ctx = New-AzStorageContext -StorageAccountName $storageAccount -UseConnectedAccount

Get-ChildItem $localFiles | ForEach-Object {
    $blobName = $_.Name
    $originalExt = $blobName.Substring(0, $blobName.LastIndexOf('.br')).Split('.')[-1]
    $contentType = switch ($originalExt) {
        "js" { "application/javascript" }
        "css" { "text/css" }
        default { "application/octet-stream" }
    }
    Set-AzStorageBlobContent -File $_.FullName -Container $container -Blob $blobName -Context $ctx -ContentEncoding "br" -ContentType $contentType
}

内容的提问来源于stack exchange,提问作者LilGames

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:47:06