前提:html
參考:集羣環境下圖片上傳的功能分析、vmware的安裝,linux的安裝、nginx和ftp服務在linux的安裝,ftp的客戶端的使用。java
圖片上傳是圖片存儲到ftp服務器上面,因此這裏不須要操做mapper層。linux
這裏用了幾個工具類nginx
ftp圖片上傳的工具類,圖片名字的一種新的生成方式,json與java類的轉換工具。spring
這裏圖片上傳採用的是富文本編輯器的一個圖片上傳插件,在jsp頁面實現的。數據庫
http://kindeditor.net/docs/upload.htmljson
根據這幾個jsp頁面咱們能夠看到圖片上傳功能的url和傳入的參數。瀏覽器
分析:服務器
(1)圖片是上傳到ftp服務器,不是在數據庫。因此咱們搭建好服務的環境。app
(2)是否有傳入的參數和返回值
在這裏咱們看到參數即uploadFile,url爲/pic/upload
這裏注意使用的上傳到服務器的一個MultiPartFile對象
springMVC實現圖片的上傳,須要依賴
導入common-fileupload的依賴
<!-- 文件上傳組件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> </dependency> |
這裏須要在springMVC中配置這個文件上傳的bean
利用富文本編輯器上傳圖片返回的結果是也是json的格式,詳細能夠參考kindEditor的上傳功能實現文檔:
返回格式(JSON):
這裏有返回成功時的狀況和失敗時的狀況。咱們能夠採用兩種方式來保存返回的json數據,一種是map集合的鍵值對形式,一種是pojo對象。下面看下兩種方式:
Map的鍵值對形式以下:
pojo對象格式:
public class PictureResult {
/**
* 上傳圖片返回值,成功:0 失敗:1
*/
private Integer error;
/**
* 回顯圖片使用的url
*/
private String url;
/**
* 錯誤時的錯誤消息
*/
}
(3)代碼的編寫實現:
controller層:
這是採用map的形式存儲返回值,由於圖片上傳這個插件有些缺陷會在有的瀏覽器顯示不出來,因此須要將java對象轉爲json的數據形式。
service層:
這裏的步驟是:
1、生成圖片的名稱,這裏採用的是上面講的利用時間的分秒來實現的命名,具體見下一章
2、利用FTPUtil工具實現圖片的上傳:
在這裏須要獲取ftp服務器的ip,用戶名,密碼,存儲的路徑。
用到了一個spring的新技術:
首先將這些ip端口等等寫在一個文件中,而後利用spring來讀取,由於在項目中不能將這些東西寫死。
讀取方式:
另外還有一個新技術,就是joda-time的日期類型轉換的插件,在依賴的jar包那裏添加依賴:
利用這個插件,能夠直接生成所須要的格式:
這裏是採用時間的形式來生成做爲圖片的文件夾