IE中打開網站圖片,右鍵-圖像另村為的時候-發生如下錯誤
--------------------------- Windows Internet Explorer --------------------------- 由於出現錯誤 800700de 而導致此項操作無法完成。 --------------------------- 確定 幫助 ---------------------------
我在服務器上分別用兩種方式輸出圖片都有如上錯誤
第一種方式為:Response.TransmitFile,第二種方式為數據庫讀取img字段後用Response.BinaryWrite
最終找到的了問題所在,是因為http頭缺少Content-type信息,而不知道,導致錯誤發生,而且我在其它網站也碰到過類似問題。因為大部分圖片為數據庫中讀取,而且歷史原因導致他們都沒有文件名也不知道文件類型,所以需要自己判斷一下,可以根據文件頭來判別類型,具體方式如下:
首先從數據庫中讀取img字段數據,保存到byte[]中,步驟略去,假設byte[] buffer;
然後寫一段類似如下的代碼
string strFlag = buffer[0].ToString() + buffer[1].ToString();
string strFileType = "image/{0}";
switch (strFlag)
...{
case "255216":
strFileType = string.Format(strFileType, "jpg");
break;
case "7173":
strFileType = string.Format(strFileType, "gif");
break;
case "6677":
strFileType = string.Format(strFileType, "bmp");
break;
case "13780":
strFileType = string.Format(strFileType, "png");
break;
default:
strFileType = string.Empty;
break;
}
if (!string.IsNullOrEmpty(strFileType))
Response.AddHeader("Content-type", strFileType);
Response.BinaryWrite(buffer);
Response.End();