2012-08-15 112 views
2

我正在創建我的網站模塊,可以在「相冊」中顯示圖像,非常像Facebook。哪裏存儲相冊的圖像?

對於存儲/分組圖像,我計劃在我的應用程序的結構內部的~/Images文件夾中有他們。這被認爲是不好的做法,還是會打開我的應用程序的任何安全漏洞?我讀過你不應該在你的網站結構中放置這樣的東西,但我不太明白爲什麼(或者如果這是相同的情況)。

因此,專輯將被歸類爲...

~/Images/album1~/Images/album2

這是一個合適的東西放到裏面App_Data,或者是有這樣的事更「首選」的位置這樣?

很抱歉,如果這是一個很小的問題。

+1

這些答案都沒有回答你的問題嗎? – Dorian 2012-08-30 12:56:46

回答

1

地圖到您的網站的~\Albums\這三個答案都很好。上傳的圖像沒有首選存儲空間,根據您的要求,完全取決於您。

由於Henhealg says,不要將它們存儲在App_Data文件。如果你把它們放在這裏,它們將無法通過網絡訪問。例如,下面將不會渲染的圖像即使路徑是正確的:

<img src="/App_Data/album1/image1.png" alt="" /> 

一種選擇是具有本地〜/相冊目錄映射到Web服務器,like sylon says訪問不同的文件夾。這使得圖像不在您的MVC應用程序所在的目錄中,而是「假裝」它們在那裏。如果你控制IIS並且可以設置文件共享,這可能是你的一個選擇。

另外,like XToro says,將它們存儲在SQL數據庫中是一個選項。這裏存儲是靈活的,因爲您不必擔心文件夾或文件名稱衝突。多個用戶可以分別擁有相同名稱的相冊和文件,但它們不會發生衝突,因爲它們不像普通文件那樣佔用文件系統空間。如果安全性對您的應用程序非常重要(不向未授權的用戶顯示照片或專輯),將它們放入SQL表格中會使其變得相當容易。

但是,如果您不擔心安全性或文件命名衝突,您可以輕鬆地將它們存儲在MVC應用程序的〜/ Images或〜/ Albums目錄中。

+2

我會將它們存儲在App_Data中,但會創建一個處理程序來讀取文件內容並將其代理到HTTP響應中。這可以防止任何漏洞,允許用戶上傳腳本或可執行文件,然後在服務器上執行它。因此,而不是http://www.example.com/App_Data/img.png的圖片請求,它會使http://www.example.com/Images/LoadImage/img.pgn正常化請求(例如檢查用戶權限,刪除任何目錄遍歷字符,檢查它只提供有效的圖像),如果一切正常,則從文件系統讀取圖像。 – SilverlightFox 2012-08-16 15:42:17

+0

@SilverlightFox,我沒有想到這一點。我們一直這樣從App_Data中讀取XML和其他內容,但沒有考慮將它用於圖像,好點。 – danludwig 2012-08-16 16:09:30

0

既然你可以輕鬆地爲用戶檢查在圖像存儲,一旦應用投入生產,在那裏你存儲圖像並不重要,就像什麼權限設置爲圖像存儲的文件夾(S)英寸

+1

我不會將圖像存儲在App_data中,因爲它被視爲用戶內容,而不是屬於應用程序的文件。 – Henkealg 2012-08-15 06:51:35

1

根據您的服務器的性能,您可能希望使用BLOB

https://dev.mysql.com/doc/refman/5.0/en/blob.html

圖像可以很容易地排序,組織,無需進行分類擔心考慮存儲你的圖片存入數據庫關於文件夾結構和文件夾權限。只需使用您選擇的PHP/AJAX /語言來提供身份驗證並選擇要顯示的文件。

這樣,每個圖像可以有它自己的字段(多達你想要的)喜歡誰貼吧的用戶,原來的文件名,標題,它屬於等等等等

0

我會用文件的專輯系統,正如你所說的,但將它存儲在應用程序文件夾之外,因爲你認爲這是不好的做法。我同意這一點 - 當我這樣做部署,我寧願刪除一切,並在新的代碼下降,並保持在web.config文件這樣,我總是有一個清潔的環境,它就是要從頭開始要容易得多,而不必擔心我需要備份或從以前的安裝帶來。

我會使用IIS的目錄映射到我的解決方案,無論我從網絡共享存儲的慾望或徘徊無論你要妥善保管您的相冊。

例如D:\MySafeStorage\Albums\當您的網站在C:\inetpub\MyWebSite\

相關問題