uncategorized

解決VSTS內Azure File Copy的Content Type問題

透過Azure File Copy的Task,可以把檔案部署到VM或是Blob中,在後者部署上如果只是一般的檔案,基本上並無太大問題,不過今日要是你部署的是js,image,css或是fonts檔案可能就會出現問題

最容易發生的問題就是Web的連結這些Link檔案,雖然不會出現404問題,但是檔案內容也不會有做作用。主要是因為使用這Task部署後,檔案在Blob的Content Type會被設定octet-stream

這樣就會導致CSS即使被下載後還是依舊不能顯示

所以,必須在Azure File Copy Task的Additional Arguments設定

因為,Azure File Copy Task背後是透過Azcopy命令程式進行動作,而Additional Arguments內擺放的參數就是Azcopy參數,關於Azcopy可以參考下面網址:
https://azure.microsoft.com/zh-tw/documentation/articles/storage-use-azcopy/

以部署CSS檔案為例,如果都不設定,在Blob的Content Type會是application/octet-stream,這樣會讓網頁無法讀取檔案內容,所以,必須在Additional Arguments內加入下面指令

1
/SetContentType:text/css

若是遇到不同檔案要有不同的Content Type,需要建立多個Task,分別過濾出檔案的Content Type去設定,然後部署,所以,語法就會變成下面這樣

1
/SetContentType:image/svg+xml /Pattern:*.svg

這就可以在部署到Blob後,也改變其檔案的Content Type了