Java服務器如何通過http接收圖片?
首先提出的"這個問題本身,存在問題"!#服務器#
情況一:如果你問的是#Java# 這種語言,后端程序部分如何通過HTTP通訊方式處理圖片上傳?
我這樣回答你:JAVA基礎組件之一Serverlet封裝了對于HTTP這種通訊方式的基本操作,但Serverlet太原始,無法滿足復雜業務場景等等原因,催生出了類似Spring系列開源框架,這類框架屏蔽更多的底層操作。一般在企業中我們在接口層(控制器層)使用SpringM vc,處理與外界的通訊(HTTP數據交互)。
首先外界發送一個HTTP請求,該請求尋址到接口層(控制器)對應的方法;其次該方法提供文件對象參數,接收外界請求發過來的文件數據;再者在該方法內使用"流"去解析文件對象參數;最后將該解析數據組裝成某種格式(jpg,png等)圖片,再使用流將其寫入到磁盤;
情況二:WEB服務器(TOMCAT,JETTY等軟件服務器)存儲處理圖片。軟件服務器本身依托于應用服務器,所以看似將圖片存儲在WEB服務器某個文件夾下,本質還是存儲在它依賴的應用服務器磁盤上,只是對圖片的索引和路徑做了更多包裝,然而這種包裝往往是缺陷較大的,在小項目中沒什么影響反而很方便。
情況三:應用服務如何處理#圖片# ,應用服務器(云服務器,硬件服務器,這兩本質上是一體的,一般采用虛擬化技術將硬件服務器虛擬成多個云服務器),一般在實際項目應用中,我們會把單獨的服務器或者服務器某個磁盤劃分為文件存儲區,JAVA通過"流"將文件寫入指定地點,在數據庫存儲相對路徑,便于尋址。這個時候圖片和應用程序物理上相互獨立,但又邏輯相連。
情況四:如果問的是在圖片傳輸開始到結束整個流程中,圖片如何流通?
圖片在客戶端(APP,Web前端等等)首先需要編碼(列如二進制流),HTTP請求攜帶這部分數據在網絡中傳輸,尋址到對應#Java# 方法,這時候,JAVA控制器會接收解析這部分數據,一般用文件對象去接收,再然后通過JAVA封裝的工具對象(流)去再次解析,然后再次生成圖片,寫入到對應的存儲位置。