我使用Tomcat作爲web服務器編碼Spring MVC 3.0
應用程序。春季MVC上傳圖片到服務器並在mysql數據庫中存儲引用
我們的要求是讓用戶上傳圖片。我正在考慮將此映像存儲在磁盤文件系統中,並將參考路徑存儲在MySQL中,而不是將所有文件信息作爲BLOB存儲在MySQL數據庫中(我被告知在MySQL中存儲不是最佳實踐)。
任何人都可以推薦如何在Spring MVC中做到這一點?
乾杯
我使用Tomcat作爲web服務器編碼Spring MVC 3.0
應用程序。春季MVC上傳圖片到服務器並在mysql數據庫中存儲引用
我們的要求是讓用戶上傳圖片。我正在考慮將此映像存儲在磁盤文件系統中,並將參考路徑存儲在MySQL中,而不是將所有文件信息作爲BLOB存儲在MySQL數據庫中(我被告知在MySQL中存儲不是最佳實踐)。
任何人都可以推薦如何在Spring MVC中做到這一點?
乾杯
存儲在磁盤和存儲在MySQL有其注意事項。 Here是很好的討論。
要將其存儲在文件系統中,您可以使用Commons File Upload。下面是一個示例
的pom.xml
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${release.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${release.version}</version>
</dependency>
JSP
<h2>Spring MVC file upload example</h2>
<form method="POST" action="<c:url value='/upload' />"
enctype="multipart/form-data">
Please select a file to upload : <input type="file" name="file" />
<input type="submit" value="upload" />
</form>
控制器
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFormUpload(
@RequestParam("file") MultipartFile file) throws IOException{
if (!file.isEmpty()) {
BufferedImage src = ImageIO.read(new ByteArrayInputStream(file.getBytes()));
File destination = new File("File directory with file name") // something like C:/Users/tom/Documents/nameBasedOnSomeId.png
ImageIO.write(src, "png", destination);
//Save the id you have used to create the file name in the DB. You can retrieve the image in future with the ID.
}
}
並限定第是在你的應用上下文
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
我希望這可以幫助。
你想使用其他一些框架嗎?休眠?速度? JSP?你的問題太籠統了。請讓我們知道你已經做了什麼。給我們一些代碼片段。沒有人會爲你做研究或編寫整個功能。 –
沒有單一的解決方案,它取決於當前和未來的要求。如果您使用數據庫存儲圖像,則可以在沒有任何問題的情況下對應用程序進行集羣(負載變大時)。雖然會引入一些數據庫維護困難。 –
如果您可以管理和使用加載的數據,那麼這可能是最佳做法。隨着文件系統,它似乎將是一個大問題。 –