AZCopy:设置文件Content-Type

时间:2013-11-12 13:57:22

标签: azure azcopy

我们正在尝试在部署脚本中使用AZCopy将一些资产直接上传到我们的存储中,该存储通过Azure上的CDN公开。

当我们上传文件时,内容类型为application/octet-stream,但我们需要能够通过示例text/javascript指定

有没有办法实现这个目标?我们不必为每种文件类型多次调用AZCopy。

4 个答案:

答案 0 :(得分:15)

最新版本的AzCopy(v3.1.0和v4.1.0-preview)包含了对设置内容类型的支持,请在http://aka.ms/azcopy下载并查找更多详细信息。

更具体地说,您可以通过选项/ SetContentType设置内容类型:[content-type]。

  

AzCopy / Source:D:\ test \ / Dest:https://myaccount.blob.core.windows.net/myContainer/ / DestKey:key / Pattern:ab / SetContentType

     

AzCopy / Source:D:\ test \ / Dest:https://myaccount.blob.core.windows.net/myContainer/ / DestKey:key / Pattern:ab / SetContentType:video / mp4

如果未在/ SetContentType选项中指定“Content-Type”,则AzCopy将根据其文件扩展名设置每个blob的内容类型。要为所有blob设置相同的内容类型,必须显式指定“Content-Type”的值,例如/ SetContentType:video / mp4。 请注意,此选项仅在将blob上载到存储端点时适用。

答案 1 :(得分:2)

我找到了使用Azure Pipelines完成此操作的方法:


- task: AzureFileCopy@4
  displayName: "Azure Storage - copy new files"
  inputs:
    SourcePath: '$(System.DefaultWorkingDirectory)/dist/*'
    azureSubscription: 'johnykes-PAYG(xxxxx-b455-4c4d-a8f8-c2a5fd479f10)'
    Destination: 'AzureBlob'
    storage: 'johnykeschatfrontend'
    ContainerName: '$web'

- task: AzureFileCopy@4
  displayName: "Azure Storage - overwrite .js files with correct Content Type"
  inputs:
    SourcePath: '$(System.DefaultWorkingDirectory)/dist/*.js'
    azureSubscription: 'johnykes-PAYG(xxxxx-b455-4c4d-a8f8-c2a5fd479f10)'
    Destination: 'AzureBlob'
    storage: 'johnykeschatfrontend'
    ContainerName: '$web'
    AdditionalArgumentsForBlobCopy: '--content-type "application/javascript"'

请告诉我您是否找到使用Azure CLI或以递归方式(对于所有.js文件)执行此操作的方法。

答案 2 :(得分:1)

查看AZCopy中可用的选项,我不认为它是直接可行的。一旦上传,您需要编写一些代码来设置blob的内容类型。

您可以做的是获取所需容器中的blob列表。 Blob列表将为您提供每个blob的当前内容类型。然后,您需要遍历此列表,从文件扩展名(Get MIME type from filename extension)中找出内容类型,然后使用更新的内容类型设置blob的属性。

答案 3 :(得分:1)

要为仍然发现此问题的任何人在此处添加其他答案,这里有一个AzCopyConfig.json文件,您可以在其中为每个文件扩展名指定MIME类型。

  

AzCopy基于JSON文件来确定Blob的内容类型,该JSON文件将内容类型存储到文件扩展名映射中。此JSON文件名为AzCopyConfig.json,位于AzCopy目录中。如果您的文件类型不在列表中,则可以将映射附加到JSON文件:

     

{ "MIMETypeMapping": { ".myext": "text/mycustomtype", . . } }

来源:https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy#automatically-determine-content-type-of-a-blob