天天看點

圖檔伺服器搭建

小弟java小白一枚,目前在做伺服器端,開發目的是對IOS端提供接口,但總感覺越寫越亂,是以這裡總結一下自己在開發過程中針對項目流程的一點想法,求各位大神指點

1.項目前端會對伺服器進行檔案或者圖檔的上傳操作,而且項目中使用的檔案也不可能存在前端,是以圖檔(檔案)伺服器是必然要有的,而且不能和app伺服器合并,不然以後更新app時都會将圖檔伺服器一起更新,并且如果版本疊代的時候舊版本沒有更新就隻能通路到舊版本伺服器的圖檔,而得不到新版本的圖檔,具體如下(圖是用xmind畫的,個人認為是很好用的一款邏輯圖軟體)

圖檔伺服器搭建

接下來就是圖檔伺服器的搭建了,實作的目标是能夠将使用者的圖檔儲存并在需要的時候傳回,(其實根本不會搭建圖檔伺服器,隻是自己的想法,勿噴)主要有兩個功能,1.儲存使用者資源(這裡以圖檔為例),接收使用者上傳的圖檔,将使用者的圖檔命名并存儲到圖檔伺服器本地,傳回圖檔的url;2.删除圖檔,根據使用者上傳的url拼接字元串,删除本地檔案,将執行狀态碼傳回(感覺不是很好,尤其是拼接字元串那一步,總覺得會有好的方法,但是自己不知道。。。。。)

具體搭建方法及細節,圖檔伺服器用的是spring注解方式對外提供接口(相對熟悉spring),前台調用接口,将圖檔轉換成base64資料,通過參數傳遞到背景,背景擷取base64資料轉換為圖檔檔案,按照使用者名-->時間戳-->圖檔的方式生成路徑存放到tomcat下的項目下的image下,如果存放成功,則拼接url(如 http://xxx.xxx.xxx.xxx:端口号/項目名/image/本地路徑就可以通路到圖檔了),然後将url傳回給前台;測試過程中,發現上傳圖檔成功,圖檔也寫入主機本地,url生成也成功,但是通路不到圖檔,原因是,spring将所有的請求都攔截下來了,通路圖檔也是一次請求,但我們并沒有這樣的接口,是以需要在圖檔伺服器的web.xml檔案中聲明

<servlet-mapping>

<servlet-name>default</servlet-name>

<url-pattern>*.jpg</url-pattern>

</servlet-mapping>

作用相當于告訴spring,如果遇見以.jpg這樣的請求,就放過去,不要攔截;如果是其他類型的檔案如.png;.css等請求也可以這樣操作,隻需要更換<url-pattern>中的參數就行了

圖檔伺服器搭建好了,接下來就是通路上傳了,當時有兩種想法,一種是前端通路app伺服器,app伺服器通路圖檔伺服器,然後将講結果傳回,一種是前端先通路圖檔伺服器,擷取到圖檔伺服器的傳回值之後在通路app伺服器,具體如下

圖檔伺服器搭建

最終選擇方法A,app前端首先選擇圖檔,将圖檔轉換成base64上傳到圖檔伺服器,然後擷取到圖檔伺服器傳回值(url),在将圖檔url傳遞到app伺服器,app伺服器将圖檔url存放到資料庫中,取資料的時候,app前端首先通路app伺服器擷取圖檔的url,再根據url擷取圖檔

繼續閱讀