數據庫中圖片保存絕對路徑和相對路徑的討論
一、問題
1新的項目
前端代碼:采用visual studio code開發,采用以vue.js為基礎的框架,最常用組件庫 Element-UI。 編輯器采用 tinymce。
后端代碼:采用microsoft visual studio開發, 采用webapi和 mvc兩種框架。 圖片上傳采用mvc。
2問題:前端 tinymce和 后端圖片上傳部分出問題。本機測試時編輯器存庫內容中圖片為絕對路徑。但是發布到測試機 編輯器存庫內容中圖片為相對地址。於是問題來了,同樣的代碼為什么會出現這種情況。
3前輩說:圖片要保存為絕對地址,不然以后圖片獨立放到一台服務器后會出現問題。前輩解釋了很久,我也沒聽懂。。
二、不懂的原因
1 tinymce上次圖片后顯示的地址,是后端程序返回給它的。也就是所tinymce上次圖片后顯示的地址是后台程序返回的,而不是客戶計算機圖片所在位置的地址。 但是后台代碼每次返回的都是絕對路徑,為什么到前端就變成相對的了?
2、tinymce 本機測試和測試機表現有差異,解決方法:初始化時配置 relative_urls: false。
3 因為MVC時期 前端代碼和后端代碼是在一起的,但現在前后端代碼幾乎完全分離。 雖然圖片上傳目前還是MVC方式實現的但以后可能也會改為webapi實現。 以后圖片也可能獨立放到一台服務器,那么前后代碼、后端代碼、圖片數據 將會是完全分離的。到時候就會發現相對路徑無法訪問圖片了。 絕對路徑可以避免以后出現這些問題。
4 如果保存圖片服務器的ip或端口變了怎么辦? 難道去數據庫修改所有ip或端口。答:更新相對固定的ip或端口是比較簡單的。
5 任何人都可以訪問這些圖片,甚至不用登錄!! 這個本項目不考慮,以后如果需要可以建個FTP資源管理器專門用來存儲圖片資源,FTP可以設置哪些用戶組可以訪問資源 ,這樣只有知道這個用戶和密碼的人才能圖片資源服務器。