iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
Modern Web

.NET教我做人系列 第 13

Day13 靜態檔案(Static Files)

  • 分享至 

  • xImage
  •  

昨天我們介紹了middleware後,是不是發現一個網頁中會使用多種不同的中介軟體,這些中介軟體都有各自不同的功用,那今天要來了解甚麼是靜態檔案(Static Files)

過去 ASP.NET 網站,只要把 .html、.css、.jpg、.png、*.js 等靜態檔案放在專案根目錄,預設都可以直接被瀏覽,但在 ASP.NET CORE 改動的瀏覽靜態檔案的方式。在還沒改動前預設是會去讀取靜態檔案的,但在新的版本後需要到特定的位置才能使用靜態檔案,現在預設的資料夾通常都命名wwwroot,還要記得要先註冊才能使用,註冊方式就是昨天的UseStaticFiles

需求設定

  1. app.UseStaticFiles() 讓wwwroot內的資料夾可以透過URL讀取
    假如現在資料如下圖,我們可以透過~對來對應到我們資料夾內的檔案 ex:~/css/site.css


2. 使用wwwroot以外的資料夾保存靜態檔案
現在我們要多新增一個靜態檔案ex:/MyStaticFile/images來放我們的圖片

新增Program.cs程式,在UseHttpsRedirectionUseRouting

app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
           Path.Combine(builder.Environment.ContentRootPath, "MyStaticFile")),
    RequestPath = "/StaticFiles"
});

再來我們可以啟動專案,輸入https://<hostname>/images/<image_file_name>,ex:https://localhost:7098/StaticFiles/images/image.jpg就可以看到你放的圖片了

  1. app.UseDefaultFiles() 會啟用預設文件,尋找 index.html、index.htm、default.html、default.htm 等檔案作為目錄 URL 的預設網頁
  2. app.UseFileServer() 整合了 UseStaticFiles、UseDefaultFiles及 UseDirectoryBrowser 功能 (目錄內容瀏覽網頁預設關閉,基於安全不建議開啟)
  3. UseStaticFiles 與 UseFileServer 可執行多次,由多個來源取得檔案

UseStaticFiles 是依賴實作 IFileProvider 的物件讀取檔案,預設使用指向 wwwroot 實體目錄的 PhysicalFileProvider 物件,之前內嵌資源用的 ManifestEmbeddedFileProvider 是另一顆實作 IFileProvider 介面的物件。換言之,只要寫一顆元件實作 IFileProvider,便能依我們想要的方式儲存及取得靜態檔案內容

今天的解紹就先到這,今天比較少是因為靜態檔案這東西我還不太熟,只能把目前看到的東西寫出來,說實話應該還有很多沒講到,但希望大家體諒一下~~~


上一篇
Day12 經過都需要Middleware的同意
下一篇
Day14 路由給了我方向
系列文
.NET教我做人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言