首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

IE 儲存圖片 800700de 錯誤解決:補齊 Content-Type 標頭

     編輯:關於ASP.NET

錯誤現象

IE 右鍵「圖片另存為」彈出 800700de,原因是 HTTP 回應缺少 Content-Type 標頭,IE 無法辨識檔案類型而拒絕儲存。

常見觸發情境

  • Response.TransmitFile 未設定 Content-Type。
  • Response.BinaryWrite 輸出資料庫 BLOB 未設定 Content-Type。
  • 歷史資料缺乏副檔名/MIME 對應。

解決方案:依檔案簽名 (Magic Number) 判斷 MIME

byte[] buffer = ...; // 來自資料庫/檔案
string flag = buffer[0].ToString() + buffer[1].ToString();
string mime = "image/{0}";

switch (flag) {
    case "255216": mime = string.Format(mime, "jpeg"); break;   // FF D8
    case "7173":   mime = string.Format(mime, "gif"); break;    // 47 49
    case "6677":   mime = string.Format(mime, "bmp"); break;    // 42 4D
    case "13780":  mime = string.Format(mime, "png"); break;    // 89 50
    default:       mime = string.Empty; break;
}

if (!string.IsNullOrEmpty(mime))
    Response.AddHeader("Content-Type", mime);

Response.BinaryWrite(buffer);
Response.End();

補充建議

  • 同步設定 Content-Disposition: inline; filename="xxx.jpg" 引導預設檔名。
  • 資料庫新增欄位儲存 MIME/副檔名,避免每次判斷簽名。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved