SpringMVC 上傳檔案

2021-10-04 07:48:27 字數 3659 閱讀 6336

前端頁面:

注意要設定表單enctype屬性:

enctype=「multipart/form-data」

(將資料以多段的形式傳送)。

enctype : 屬性規定在傳送到伺服器之前應該如何對表單資料進行編碼。

multipart/form-data : 不對字元編碼。在使用包含檔案上傳控制項的表單時,必須使用該值。

action

="user/fileupload"

method

="post"

enctype

="multipart/form-data"

>

選擇檔案:type

="file"

name

="upload"

/>

/>

type

="submit"

value

="上傳檔案"

/>

form

>

後端處理:

獲取目標存放目錄,不存在則建立

獲取servlet上傳檔案工具

解析request域,獲取list < fileitem > 物件

每個fileitem存著表單每一項的具體資訊

fileitem通過流的形式寫出,並釋放

/**

* 檔案上傳

// 建立磁碟檔案項工廠

diskfileitemfactory factory =

newdiskfileitemfactory()

; servletfileupload fileupload =

newservletfileupload

(factory)

;// 解析request物件

list

list = fileupload.

parserequest

(request)

;// 遍歷

for(fileitem fileitem : list)

else

}return

"success"

;}

springmvc直接將request物件解析這一步驟通過前端控制器呼叫檔案解析器幫我們做了,直接傳遞了乙個multipartfile物件給我們,multipartfile封裝著檔案內容。

1. 檔案解析器,id名稱必須是multipartresolver

"multipartresolver"

class

="org.springframework.web.multipart.commons.commonsmultipartresolver"

>

name

="maxuploadsize"

value

="10485760"

/>

bean

>

2. 前端也同樣需要設定表單enctype屬性:

enctype=「multipart/form-data」

action

="upload"

method

="post"

enctype

="multipart/form-data"

>

name

="name"

value

="eddie"

>

/>

選擇檔案:type

="file"

name

="upload"

>

/>

type

="submit"

>

form

>

3. 後端:
/**

* springmvc方式的檔案上傳

// 獲取到上傳檔案的名稱

string filename = upload.

getoriginalfilename()

; string uuid = uuid.

randomuuid()

.tostring()

.replaceall

("-",""

).touppercase()

;// 把檔案的名稱唯一化

filename = uuid+

"_"+filename;

// 上傳檔案

upload.

transferto

(new

file

(file,filename));

return

"success"

;}

跨伺服器需要的jar包

>

>

com.sun.jerseygroupid

>

>

jersey-coreartifactid

>

>

version

>

dependency

>

>

>

com.sun.jerseygroupid

>

>

jersey-clientartifactid

>

>

version

>

dependency

>

步驟:

把path目錄設定為儲存伺服器的檔案目錄

// 定義伺服器的請求路徑

;

通過webresource和client上傳檔案

// 建立客戶端物件 

client client = client.

create()

;// 連線伺服器

webresource webresource = client.

resource

(path+filename)

;// 上傳檔案

webresource.

put(upload.

getbytes()

);

springmvc檔案上傳

上 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 param fname 檔名稱 含字尾 throws ioexception down...

spring mvc 檔案上傳

在檔案上傳時,我們需要用到檔案上傳解析器,其實,它並不陌生,只是對httpservletrequest的乙個擴充套件,使其能夠更好的處理檔案上傳,擴充套件的介面名為 org.springframework.web.multipart.multiparthttpservletrequest 先用乙個類...

Springmvc 上傳檔案

springmvc為檔案上傳提供了直接支援,通過multipartresolver實現。預設沒有裝配multipartresolver,需要先在上下文中配置multipartresolver。1 需要的jar包 commons iogroupid commons ioartifactid 2.4ve...