AZCopy: установить Content-Type для файла.

Мы пытаемся использовать AZCopy в нашем сценарии развертывания, чтобы загрузить некоторые ресурсы непосредственно в наше хранилище, которое доступно через CDN в Azure.

Когда мы загружаем файлы, Content-Type - application/octet-stream, но нам нужно будет указать на примере text/javascript

Есть ли способ добиться этого? Нам не нужно вызывать AZCopy несколько раз для каждого типа файлов.


person Charles Ouellet    schedule 12.11.2013    source источник


Ответы (4)


Последняя версия AzCopy (v3.1.0 и v4.1.0-preview) включает поддержку установки типа контента. Загрузите и найдите более подробную информацию по адресу http://aka.ms/azcopy.

Чтобы быть более конкретным, вы можете установить тип содержимого с помощью параметра / SetContentType: [content-type].

AzCopy / Источник: D: \ test \ / Dest: https://myaccount.blob.core.windows.net/myContainer/ / DestKey: key / Шаблон: ab / SetContentType

AzCopy / Источник: D: \ test \ / Dest: https://myaccount.blob.core.windows.net/myContainer/ / DestKey: key / Шаблон: ab / SetContentType: video / mp4

Если Content-Type не указан в параметре / SetContentType, AzCopy установит тип содержимого каждого большого двоичного объекта в соответствии с расширением его файла. Чтобы установить один и тот же тип содержимого для всех больших двоичных объектов, необходимо явно указать значение для «Content-Type», например / SetContentType: video / mp4. Обратите внимание, что этот параметр применим только при загрузке больших двоичных объектов в конечные точки хранилища.

person Zhiming Yuan - Microsoft    schedule 09.01.2015

Я нашел способ сделать это с помощью 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).

person johnykes    schedule 02.06.2020

Чтобы добавить сюда другие ответы для тех, кто все еще находит этот вопрос, существует (теперь) файл AzCopyConfig.json, в котором вы можете указать типы MIME для каждого расширения файла.

AzCopy определяет тип содержимого большого двоичного объекта на основе файла 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

person elkaz    schedule 20.06.2018
comment
Ссылка больше не указывает на нужный раздел, и я больше не могу ее найти. Это еще возможно? - person Kolky; 11.01.2021

Глядя на варианты, доступные в AZCopy, я не думаю, что это возможно напрямую. Вам нужно будет написать код, чтобы установить тип содержимого большого двоичного объекта после его загрузки.

Что вы можете сделать, так это получить список больших двоичных объектов в желаемом контейнере. Список BLOB-объектов даст вам текущий тип содержимого каждого BLOB-объекта. Затем вам нужно будет перебрать этот список, узнать тип содержимого по расширению файла (Получите тип MIME из расширения имени файла), а затем установите свойства большого двоичного объекта с обновленным типом содержимого.

person Gaurav Mantri    schedule 12.11.2013
comment
Спасибо, Gaurav, мы думали об аналогичном решении, но надеялись, что с помощью AZCopy будет проще, но я думаю, мы сделаем то, что вы предложили! - person Charles Ouellet; 12.11.2013