萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Windows Server 2003 教學

Windows Server 2003 無法驗證圖片大小 (img.fileSize = -1) 解決方案

在 Windows Server 2003 上開發 ASP/ASP.NET 應用程式時,使用 img.fileSize 或 FileUpload.PostedFile.ContentLength 取得上傳圖片大小卻總是回傳 -1,導致無法驗證檔案大小。經測試,這是 IE 增強式安全性設定 (IE ESC) 導致的已知問題。

問題成因

Windows Server 2003 預設啟用 Internet Explorer 增強式安全性設定 (IE ESC),將所有網站歸類為「網際網路」區域並套用「高」安全性等級。此模式下,瀏覽器上傳檔案時不會正確傳送 Content-Length 標頭,導致伺服端無法取得檔案大小(回傳 -1)。

解決方法:降低 IE 安全性等級或移除 IE ESC

方法一:調整 IE 安全性等級(快速測試用)

  1. 開啟 IE → 工具 → 網際網路選項 → 安全性 索引標籤。
  2. 選取 網際網路 區域,將安全性等級從「高」調整為「中」或「中-高」。
  3. 套用並重新啟動 IE 測試。

方法二:移除 IE 增強式安全性設定元件(建議生產環境)

  1. 開啟 控制台 → 新增/移除程式 → 新增/移除 Windows 元件。
  2. 取消勾選 Internet Explorer 增強式安全性設定。
  3. 點選 下一步 完成移除,再按 完成 關閉精靈。

開發端補強建議(不依賴用戶端設定)

  • 伺服端驗證: 在 ASP.NET 中使用 Request.ContentLength 或 FileUpload1.PostedFile.ContentLength,搭配 web.config 設定 <httpRuntime maxRequestLength="..." /> 限制上傳大小。
  • 用戶端預檢: 使用 HTML5 File API (file.size) 在上傳前於瀏覽器端驗證大小(需 IE10+ 或現代瀏覽器)。
  • 串流處理: 大檔案上傳建議採用分塊上傳或串流寫入,避免記憶體壓力。

注意事項

  • 移除 IE ESC 會降低伺服器瀏覽網頁時的安全防護,建議伺服器僅用於管理操作,不作為日常上網瀏覽用途。
  • 若為安全合規需求必須保留 IE ESC,請採用開發端補強方案,勿依賴 img.fileSize 等客戶端屬性。
copyright © 萬盛學電腦網 all rights reserved