Excel 文件 (azure blob) 未在 chrome 中下载
Excel file (azure blob) does not download in chrome
Excel 文件存储在 azure blob 容器中。它们在 IE 中下载时没有发生意外,但在 Chrome 中页面显示此消息(在 Canary 中它崩溃):
This file appears corrupt
并提供了一个 link 来下载它,从那时起一切都很好。我试过将内容类型设置为不同的 excel 格式,但结果是一样的。
这是 blob 代码:
MemoryStream memoryStream = new MemoryStream();
CreateFile(memoryStream, grid);
memoryStream.Position = 0;
var blockBlob = container.GetBlockBlobReference(randomFileName);
blockBlob.Properties.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
blockBlob.DeleteIfExists();
var options = new BlobRequestOptions()
{
ServerTimeout = TimeSpan.FromMinutes(10)
};
try
{
blockBlob.UploadFromStream(memoryStream, null, options);
}
catch (Exception e)
{
_logger.Error("Uploading excel file: Error: {0}", e.Message);
}
return new Uri("https://myblobs.blob.core.windows.net/" + "containername/" + randomFileName);
你错过了blockBlob.SetProperties();
试试这个:
var blockBlob = container.GetBlockBlobReference(randomFileName);
blockBlob.DeleteIfExists();
blockBlob.Properties.ContentType =
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
blockBlob.SetProperties(); // This is for commiting changes.
请注意,对于 .xls
个文件,您需要将 content-type
设置为 application/vnd.ms-excel
。
仅供参考:如果您想更新现有 blob 中的 属性 值,您需要获取当前值,设置我们要更新的 属性 并调用 SetProperties
斑点。
示例:
blob.FetchAttributes();
blob.Properties.ContentType = "image/png";
blob.SetProperties();
Excel 文件存储在 azure blob 容器中。它们在 IE 中下载时没有发生意外,但在 Chrome 中页面显示此消息(在 Canary 中它崩溃):
This file appears corrupt
并提供了一个 link 来下载它,从那时起一切都很好。我试过将内容类型设置为不同的 excel 格式,但结果是一样的。
这是 blob 代码:
MemoryStream memoryStream = new MemoryStream();
CreateFile(memoryStream, grid);
memoryStream.Position = 0;
var blockBlob = container.GetBlockBlobReference(randomFileName);
blockBlob.Properties.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
blockBlob.DeleteIfExists();
var options = new BlobRequestOptions()
{
ServerTimeout = TimeSpan.FromMinutes(10)
};
try
{
blockBlob.UploadFromStream(memoryStream, null, options);
}
catch (Exception e)
{
_logger.Error("Uploading excel file: Error: {0}", e.Message);
}
return new Uri("https://myblobs.blob.core.windows.net/" + "containername/" + randomFileName);
你错过了blockBlob.SetProperties();
试试这个:
var blockBlob = container.GetBlockBlobReference(randomFileName);
blockBlob.DeleteIfExists();
blockBlob.Properties.ContentType =
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
blockBlob.SetProperties(); // This is for commiting changes.
请注意,对于 .xls
个文件,您需要将 content-type
设置为 application/vnd.ms-excel
。
仅供参考:如果您想更新现有 blob 中的 属性 值,您需要获取当前值,设置我们要更新的 属性 并调用 SetProperties
斑点。
示例:
blob.FetchAttributes();
blob.Properties.ContentType = "image/png";
blob.SetProperties();