asp.net的webform-查看網路磁碟的圖檔,以縮圖的方式在網頁上顯示

asp.net的webform-查看網路磁碟的圖檔,以縮圖的方式在網頁上顯示

 

功能很簡單

就是用webform寫一個圖片瀏灠器

但圖片是放在網路磁碟中

要做以下的內容:

1. 突破權限障礙 (The Identity & Mapping)

動態掛載:IIS 預設看不見網路磁碟。改用 WNetAddConnection2 直接在代碼中進行身分連線。

2. 解決 500 錯誤與圖片紅叉 (The Handler Strategy)

獨立處理器 (ASHX):不直接讓網頁讀取實體路徑(網頁無法直接顯示 Y:\...),而是透過一個「外送員」(Handler)將圖片讀出來轉交給瀏覽器。

預檢機制:在 ProcessRequest 加入 if (!Directory.Exists("Y:\\"))。這是最重要的優化,避免了幾十個請求同時搶奪「掛載權限」導致的系統鎖定。

3. 優化載入速度 (The Performance)

快取控制 (Caching):透過 Response.Cache 讓瀏覽器記住圖片。按 F5 變快的原因就是因為瀏覽器不再重抓舊圖,只專注於處理新圖。

TransmitFile:比起 WriteFile,它更省記憶體,這在處理大圖或正式區多使用者環境下極為關鍵。

延遲載入 (Lazy Loading):在 <img> 加入 loading="lazy",從前端控制流量,不讓伺服器瞬間爆炸。


核心運作流程
使用者進入頁面:在瀏覽器輸入 path(或預設路徑)。

ASPX 掛載磁碟:後端透過 NetworkDrive 工具,利用 Win32 API 強制讓 IIS 在系統底層將 \\192.168.1.199 掛載為 Y: 槽。

讀取目錄清單:程式掃描 Y:\ 指定目錄下的資料夾與圖片,產生一組 LinkUrl。

圖片延遲載入 (Lazy Load):前端產生圖片標籤,但不一次全部請求,等畫面捲動到才抓圖。

ASHX 圖片傳送:瀏覽器請求 ASHX,處理器確保 Y: 槽通暢後,直接將檔案流(File Stream)傳回瀏覽器

 

檔案名稱職責

NetworkDrive.cs底層 Win32 API 工具,負責處理 Y 槽連線與斷開,放在app_code中。

TKGETDESIGNED.aspxUI 介面,包含路徑 TextBox、資料夾與圖片的佈局排列。

TKGETDESIGNED.aspx.cs核心邏輯,負責路徑解析、目錄掃描及 rptItems 資料綁定。

TKGETDESIGNED_ImageHandler.ashx圖片轉發器,負責把網路磁碟的實體檔案轉成網頁看得到的圖片流。

 

 

自我LV~