摘要:圖片存儲的方式為存儲在虛擬目錄下并返回虛擬目錄的路徑。如果是將開發(fā)的包直接部署在服務(wù)器中,則參考配置虛擬目錄。
序言:項(xiàng)目環(huán)境
本次簡單的demo是建立在springmvc框架上的,部署環(huán)境為tomcat,前段使用的bootstrap+jquery_file_upload組件。圖片存儲的方式為存儲在虛擬目錄下并返回虛擬目錄的路徑。建議先搭配好springmvc環(huán)境再繼續(xù)參考本博客。沒有搭配好環(huán)境的可以參考這篇博客
圖片存儲方式在給出上傳圖片的代碼之前,先講解一下服務(wù)器接收圖片上傳的思路。服務(wù)器端保存圖片一般有兩種思路。
將圖片以blob的格式存儲在數(shù)據(jù)庫中,僅適用于圖片較小的場景
將圖片存儲在服務(wù)器的目錄下,并在數(shù)據(jù)庫中存儲圖片路徑和訪問URL,缺點(diǎn)是可能會造成服務(wù)器性能的下降
將圖片存儲在非服務(wù)器目錄的任意路徑下,在服務(wù)器中配置虛擬目錄,通過虛擬目錄訪問圖片目錄下的圖片
在這里我將主要講一下如何實(shí)現(xiàn)第三種圖片存儲。
在開發(fā)環(huán)境中,可以直接使用Intellij來配置tomcat虛擬目錄。因?yàn)镮ntellij管理下的tomcat實(shí)際上是一個(gè)tomcat虛擬映像,所以Intellij中的配置將不會影響實(shí)際tomcat中的配置。所以如果是在開發(fā)測試的過程中直接使用Intellij部署項(xiàng)目,請參考Intellij中配置虛擬目錄。如果是將開發(fā)的war包直接部署在服務(wù)器中,則參考tomcat配置虛擬目錄。
進(jìn)入tomcat配置管理頁面,點(diǎn)擊deployment標(biāo)簽,然后點(diǎn)擊左下角的加號選擇‘external source’,并添加相應(yīng)的虛擬目錄所在的真實(shí)路徑。最后在Application context中配置虛擬目錄的訪問路徑。
在tomcat中配置虛擬目錄的方法有多種,詳細(xì)介紹可以參考這兩篇博客
http://www.cnblogs.com/love54...
https://my.oschina.net/liangz...
在這里 我想要介紹的方法是,在Catalina中配置多帶帶的虛擬目錄。
找到/TOMCAT_HOME/conf/Catalina/localhost文件夾,在該文件夾下新建一個(gè)xml文件,xml文件的文件名就是虛擬目錄對應(yīng)的訪問路徑名,如果需要多級目錄,則用#分割開來,例如psm#pc.xml對應(yīng)的訪問路徑就是/psm/pic。在該xml文件中配置虛擬目錄,語法如下
圖片上傳和接收
reloadale是說如果其中發(fā)生變化,是否重新加載。在結(jié)束配置后,無需重啟服務(wù)器就可以直接用該路徑訪問虛擬目錄。
在前端,使用bootstrap和juery_file_upload插件進(jìn)行圖片上傳,簡單的html頁面如下
...
controller接收上傳文件的請求,在這里可以參考這篇博客
java存儲文件的代碼如下,該方法將圖片的字節(jié)流轉(zhuǎn)換為文件并存儲在相應(yīng)的圖片路徑下,也就是我們之前配置的虛擬目錄之下。
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; /** * Created by rale on 5/29/17. * 將圖片存儲至本地 */ public class FileUtil { public static void save(byte[] bytes, String fileName, String path) throws IOException { createDirectory(path); FileOutputStream os = new FileOutputStream(path + fileName); os.write(bytes); os.close(); } private static boolean isExistPath(String path) { File file = new File(path); if (file.exists()) {//判斷文件目錄的存在 return true; }else{ return false; } } private static void createDirectory(String path){ if(!isExistPath(path)){ File file=new File(path); file.mkdirs(); } } }
想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號!將會不定期的發(fā)放福利哦~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67132.html
摘要:啟動(dòng)后會連接到告知自己的信息,形成映射關(guān)聯(lián),并采用心跳機(jī)制保持狀態(tài)。存儲節(jié)點(diǎn)負(fù)責(zé)文件的存儲,可以集群部署。一個(gè)卷組內(nèi)之間相互通信,文件進(jìn)行同步,保證卷內(nèi)完全一致,所以一個(gè)卷的容量以最小的服務(wù)器為準(zhǔn)。 簡介 FastDFS是一個(gè)輕量級分布式文件系統(tǒng)??梢詫ξ募M(jìn)行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,而且可以集群部署,有高可用保障。相應(yīng)的競品有Ceph、T...
摘要:啟動(dòng)后會連接到告知自己的信息,形成映射關(guān)聯(lián),并采用心跳機(jī)制保持狀態(tài)。存儲節(jié)點(diǎn)負(fù)責(zé)文件的存儲,可以集群部署。一個(gè)卷組內(nèi)之間相互通信,文件進(jìn)行同步,保證卷內(nèi)完全一致,所以一個(gè)卷的容量以最小的服務(wù)器為準(zhǔn)。 簡介 FastDFS是一個(gè)輕量級分布式文件系統(tǒng)。可以對文件進(jìn)行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,而且可以集群部署,有高可用保障。相應(yīng)的競品有Ceph、T...
摘要:那我們就不用在每一個(gè)方法通過將數(shù)據(jù)傳到頁面。還能夠配置該參數(shù)是否是必須的。方法的返回值有種重定向轉(zhuǎn)發(fā)內(nèi)部就是將數(shù)據(jù)綁定到域?qū)ο笾械?。注解能夠?qū)?shù)據(jù)綁定到中也就是中,如果經(jīng)常需要綁定到中的數(shù)據(jù),抽取成方法來使用這個(gè)注解還是不錯(cuò)的。 前言 本文主要講解的知識點(diǎn)如下: 參數(shù)綁定 數(shù)據(jù)回顯 文件上傳 參數(shù)綁定 我們在Controller使用方法參數(shù)接收值,就是把web端的值給接收到Cont...
摘要:我們可以來看看數(shù)據(jù)庫這個(gè)字段就是判斷我們的這條數(shù)據(jù)是否是有效的,表示這條數(shù)據(jù)是有效的,表示這條數(shù)據(jù)是無效的。 ? 技術(shù)棧 后端 Java 8開發(fā)框架:SpringB...
閱讀 1230·2019-08-30 15:55
閱讀 981·2019-08-30 15:55
閱讀 2185·2019-08-30 15:44
閱讀 2954·2019-08-29 14:17
閱讀 1162·2019-08-29 12:45
閱讀 3337·2019-08-26 10:48
閱讀 3162·2019-08-23 18:18
閱讀 2631·2019-08-23 16:47