2013-01-04 35 views
1

我正在創建一個讓用戶上傳音頻的網絡應用程序,我的問題是我應該在哪裏放置它們?我應該把它們放在Web-Content裏面嗎?或者在WEB-INF裏面? (我不考慮使用這些文件的數據庫,因爲大多數音頻文件是巨大的)上傳和存儲文件的最佳做法是什麼?儘可能多的,因爲我部署我的應用程序在戰爭文件中的文件將仍然存在,因爲我將這些文件的相對文件路徑存儲在數據庫中放置用戶上傳文件的位置?

+1

你關心,如果最終用戶可以直接訪問文件,未經您的許可? – Jazzepi

+1

絕不會將用戶上傳的文件存儲在webapp或部署文件夾中。你可以把它放在亞馬遜s3或rackspace雲文件中。或者有一個file.repositry.path的配置並在那裏存儲文件。 – Subin

+0

如何創建一個file.repository.path?我想輕鬆地部署我的應用程序,所以如果萬一我搬到另一個單位的文件將仍然存在 – user962206

回答

1

放置上傳的文件絕對不是一個好主意在任何級別的網絡應用程序下。 我的首選是配置路徑的配置文件。從web根目錄完全無法訪問路徑非常重要,這樣就不會在服務器上執行上載的文件。

create a text file called <webapp>.properties 

StorePath=C:/temp/Storage/ 

該文本文件然後應包括在從ResourceLoader.getResource訪問的路徑下()例如classpath,WEB-INF

然後可以使用java加載屬性。

java.util.Properties props = new java.util.Properties(); 
java.net.URL urlx = ResourceLoader.getResource("<webapp>.properties"); 
props.load(urlx.openStream()); 
String buildVersion =props.get("StorePath").toString(); 

然後將文件保存到該位置。

+0

如果您正在構建*並託管*應用程序,這將工作。在較大的項目中,託管和維護將是不同的問題。在這種情況下,我發現最簡單的方法就是保留這個解決方案的要點,但把配置放在數據庫,JNDI或系統屬性中。 – Friso

0

這取決於你面對的場景,這些音頻將用於什麼?然而,將資源文件放在webapp文件夾中總是一個壞主意。您可以將它們存儲在應用程序有權訪問的獨立文件夾中,或將某些遠程存儲裝載到您的計算機或某些其他分佈式文件系統(如HDFS)或甚至雲存儲產品(如Amazon S3)中。

+0

我正在建立一個音樂網站,這些音頻文件將被流式傳輸。我會將音頻文件相對路徑存儲在數據庫中。 – user962206

0

在服務器存儲位置上載文件的最佳方式(服務器文件系統中的硬盤驅動器)在服務器上創建一個文件夾並上載該文件。上傳後將文件的上傳路徑放到數據庫中。

當用戶想要從數據庫中顯示文件獲取文件路徑並顯示在你的html/jsp頁面上並顯示具有合適html標籤的路徑來處理它。

喜歡顯示圖像,你會保存圖像上的目錄在服務器上存儲它的路徑在分貝假設其路徑爲www.xrv.com/images/Sunset.jpg (絕對or相對`)。

在JSP中使用<img src="www.xrv.com/images/Sunset.jpg"/>