在Azure存储上打开我的静态网站时,我得到一个下载屏幕

时间:2019-07-10 18:22:46

标签: azure azure-storage

我正在使用静态网站功能将ReactJS应用托管在Azure存储上。使用此脚本:

$container = "`$web"
$context = New-AzureStorageContext -StorageAccountName $env:prSourceBranchName -StorageAccountKey "e4Nt0********dbFlEG2LN9g2i5/yQ=="
Get-ChildItem -Path $env:System_DefaultWorkingDirectory/_ClientWeb-Build-CI/ShellArtifact/out/build -File -Recurse | Set-AzureStorageBlobContent -Confirm:$false -Force -Container $container -Context $context

我正在将文件从我的内部版本上传到Azure存储$ web blob。

enter image description here

导航到静态页面的URL时,会出现一个下载屏幕:

enter image description here

当我删除所有文件并上传simpel index.html文件时,我确实会加载index.html文件:

https://gist.github.com/chrisvfritz/bc010e6ed25b802da7eb

编辑

在Edge中,我可以打开页面,但Chrome和Firefox会加载下载屏幕。但是Firefox确实显示了更多信息:

enter image description here

enter image description here

所以看起来内容类型有点奇怪。

1 个答案:

答案 0 :(得分:1)

根本原因应该是内容类型不正确。

您已经提到,手动上传.html文件时,其内容类型为“ text/html”。使用Set-AzureStorageBlobContent时,它将更改为“ application/octet-stream”。

解决方案是,在使用powershell cmdlet Set-AzureStorageBlobContent时,应指定参数-Properties,如下所示:-Properties @{"ContentType" = "text/html"}

如下所示的示例代码(在我这边工作):

$context = New-AzureStorageContext -StorageAccountName "xxx" -StorageAccountKey "xxxxx"

#note that the last "\" is necessary
$path = "D:\temp\1\"

Get-ChildItem -Path $path  -File -Recurse | `
 %{ if($_.extension -eq ".html") {Set-AzureStorageBlobContent -File $_.FullName -Blob $_.FullName.Replace($path,'')  -Container "test-1" -Context $context -Properties @{"ContentType" = "text/html"}} `
 else {Set-AzureStorageBlobContent -File $_.FullName -Blob $_.FullName.Replace($path,'') -Container "test-1" -Context $context}}

上面的代码只是将扩展名为.html的文件的content_type更改为“ text / html”。您可以随时更改代码以满足您的需求。