Функция Powershell для изменения ContentType объекта в хранилище BLOB-объектов Azure - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь написать функцию в Powershell, которая устанавливает BLOB-объекты в определенном контейнере определенного типа, так как они всегда пишутся с типом application/octet-stream, что вызывает проблемы в последующих приложениях.Я написал следующую функцию, но она возвращает ошибку 'ContentType' is a ReadOnly property.

Мне было интересно, есть ли способ обойти это?Я знаю, что это свойство можно установить вручную в Azure Storage Explorer, однако это ежедневная задача.

Функция:

 Function Set-ContentType {

    Param (
        [string]$accountName,
        [string]$accessKey,
        [string]$storageContainer
    )

    # Connect to blob storage and get blobs
    $context = New-AzureStorageContext -StorageAccountName $accountName -StorageAccountKey $accessKey
    $blobs = Get-AzureStorageBlob -Container $storageContainer -Context $context -Blob $fileMask

    foreach ($blob in $blobs) {
        if ($blob.ContentType -eq $genericMIME) {
            $blob.ContentType = $targetMIME
        }
    }
 }

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Я решил собственную проблему, написав альтернативный скрипт загрузки, который определяет ContentType во время написания большого двоичного объекта:

 Function UploadFile {

    Param (
        [string]$accountName,
        [string]$accessKey
    )

    $context = New-AzureStorageContext -StorageAccountName $accountName -StorageAccountKey $accessKey

    $files = Get-ChildItem $workingDir -Filter $fileMask

    foreach ($file in $files) {
        Set-AzureStorageBlobContent -File $file.FullName -Container $container -Properties @{"ContentType" = "$targetMIME"} -Context $context -Force
    }
 }
0 голосов
/ 30 апреля 2019

Итак, по ссылке в комментариях, пожалуйста, попробуйте это решение.

 Function Set-ContentType {

    Param (
        [string]$accountName,
        [string]$accessKey,
        [string]$storageContainer
    )

    # Connect to blob storage and get blobs
    $context = New-AzureStorageContext -StorageAccountName $accountName -StorageAccountKey $accessKey
    $blobs = Get-AzureStorageBlob -Container $storageContainer -Context $context -Blob $fileMask

    foreach ($blob in $blobs) {
        if ($blob.ContentType -eq $genericMIME) {
            $blob.Properties.ContentType = $targetMIME
            $blob.SetProperties()
        }
    }
 }
...