gpt4 book ai didi

c# - 使用 Stream 显示 Image *.ico

转载 作者:太空狗 更新时间:2023-10-29 23:25:27 28 4
gpt4 key购买 nike

我想显示扩展名为 *.ico 的图像,我使用 Stream 来完成它。但我有一个问题。

使用扩展名*.jpg*.bmp...图像显示正常但*.ico,它不显示

这是我的代码:

 private void OutputStream(string fileName)
{
try
{
Stream dataStream = null;

SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPFile spFile = web.GetFile(fileName);
dataStream = spFile.OpenBinaryStream();
this.HandleOutputStream(dataStream);
});

}
catch (System.Threading.ThreadAbortException exTemp)
{
logger.Error("KBStreamPicture::OutputStream", exTemp);
}
catch (Exception ex)
{
//System.Diagnostics.Debug.Write("OutputStream::" + ex);
logger.Error("KBStreamPicture::OutputStream", ex);
}
}

private void HandleOutputStream(Stream dataStream)
{
const int bufferSize = 16384; //16KB

using (Stream file = dataStream)
{
if (file != null)
{
this.Page.Response.Clear();
this.Page.Response.Cache.SetCacheability(System.Web.HttpCacheability.Private);
this.Page.Response.Cache.SetExpires(DateTime.Now.AddMinutes(20)); //only cache 20 minutes
byte[] buffer = new byte[bufferSize];
int count = file.Read(buffer, 0, bufferSize);

while (count > 0)
{
if (this.Page.Response.IsClientConnected)
{
this.Page.Response.OutputStream.Write(buffer, 0, count);
count = file.Read(buffer, 0, bufferSize);
}
else
{
count = -1;
}
}
this.Page.Response.End();
}
}
}

请帮我解决这个问题。

最佳答案

您没有设置 ContentType Response 上的属性。尝试将 ContentType 设置为 image/x-icon(请注意,“正确”的内容类型可能是 image/vnd.microsoft.icon , 但 this post 似乎表明您可能会遇到该类型的问题)。

代码应该是这样的:

this.Page.Response.Clear();
this.Page.Response.Cache.SetCacheability(System.Web.HttpCacheability.Private);
this.Page.Response.Cache.SetExpires(DateTime.Now.AddMinutes(20));
this.Page.Response.ContentType = "image/x-icon";

关于c# - 使用 Stream 显示 Image *.ico,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510441/

28 4 0