日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎么实现动态设置静态文件存储目录?

發布時間:2023/12/4 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么实现动态设置静态文件存储目录? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

文章名字有點繞口,舉例說明一下:

多用戶使用同一個網站上傳文件,但是因為一些原因,文件需要存儲到服務器的不同目錄下。

比如用戶 A 對應 c:\abc,用戶 B 對應 d:\xyz\123。

并且,文件需要以靜態文件方式提供訪問。

由于每個用戶的靜態文件存儲目錄不同,這就需要根據用戶當前請求動態確定存儲目錄。

怎么實現?

思路

默認情況下,靜態文件存儲在項目的 Web 根目錄中。默認目錄為 {content root}/wwwroot。

如果要使用其他目錄,可以按如下方式配置靜態文件中間件:

app.UseStaticFiles(new?StaticFileOptions {FileProvider?=?new?PhysicalFileProvider(@"c:\abc") });

查看 FileProvider 屬性,它是 IFileProvider 接口的實例:

public?interface?IFileProvider {IFileInfo?GetFileInfo(string?subpath);... }

其中,subpath 是相對于 Web 根目錄的標識文件的相對路徑:

https://<hostname>/StaticFiles/images/red-rose.jpg//subpath /StaticFiles/images/red-rose.jpg//靜態文件路徑 c:\abc\StaticFiles\images\red-rose.jpg

如果 subpath 有規律(比如以用戶 Id 為第一級子目錄),我們可以實現自定義 IFileProvider,通過 subpath 反向映射出靜態文件路徑。

例如:

subpath靜態文件路徑
/userAId/1.jpgc:\abc\userAId\1.jpg
/userBId/1.jpgd:\xyz\123\userBId\1.jpg

實現

創建 MyIOFileProvider,代碼如下:

public?class?MyIOFileProvider?:?IFileProvider {public?IDirectoryContents?GetDirectoryContents(string?subpath){return?GetPhysicalFileProvider(subpath).GetDirectoryContents(subpath);}public?IFileInfo?GetFileInfo(string?subpath){return?GetPhysicalFileProvider(subpath).GetFileInfo(subpath);}public?IChangeToken?Watch(string?filter){return?null;} }

然后根據 subpath 獲取對應的 PhysicalFileProvider 進行處理:

private?PhysicalFileProvider?GetPhysicalFileProvider(string?subpath) {//實際可從數據庫獲取if?(subpath.StartsWith("/1/")){return?new?PhysicalFileProvider(@"c:\abc");}if?(subpath.StartsWith("/2/")){return?new?PhysicalFileProvider(@"d:\xyz\123");}... }

使用

按如下方式配置靜態文件中間件:

app.UseStaticFiles(new?StaticFileOptions {FileProvider?=?new?MyIOFileProvider() });

運行效果如圖:

結論

今天,我們通過自定義 IFileProvider,實現了動態設置靜態文件存儲目錄。

想了解更多內容,請關注我的個人公眾號”My IO“

總結

以上是生活随笔為你收集整理的怎么实现动态设置静态文件存储目录?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。