什么是MultipartFile
MultipartFile是spring類型,代表HTML中form-data方式上傳的文件俄精,包含二進(jìn)制數(shù)據(jù)+文件名稱彼乌∶喔【來(lái)自百度知道】
上傳文件html部分
<form action="fileUpload" method="post" enctype="multipart/form-data">
<input type="file" multiple name="file" class="input-file"/>
<button type="submit" class="btn btn-primary" style="width: 100px;">提交</button>
</form>
我這里是從我項(xiàng)目中截取出來(lái)的一小部分并做了簡(jiǎn)化,主要部分如上所示跨新。
這里就有我踩過(guò)的坑了富腊!
首先第一點(diǎn),上傳文件必須是發(fā)送POST請(qǐng)求域帐,所以form表單中必須標(biāo)明是POST請(qǐng)求(method="post")
第二點(diǎn)就是form表單中必須加上 enctype="multipart/form-data" 這個(gè)屬性赘被,這是要告訴后臺(tái)這條是一個(gè)multipart請(qǐng)求,不然后臺(tái)識(shí)別不出這個(gè)請(qǐng)求是一個(gè)上傳文件請(qǐng)求
后臺(tái)上傳文件Controller
package com.jhun.gdp.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.UUID;
@Controller
public class StuFileUploadController {
@RequestMapping("/fileUpload")
@ResponseBody
public String fileUpload(@RequestParam("file") MultipartFile file){
String result = "";
if(file.isEmpty()){
result = "文件為空";
}
//文件名
String fileName = file.getOriginalFilename();
//獲取后綴名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
String filePath = "C:\\Users\\Administrator\\Desktop\\gdp備份文件\\gdp備份文件\\Server\\src\\main\\resources\\static\\upload\\";
//新文件名
fileName = UUID.randomUUID()+suffixName;
File dest = new File(filePath+fileName);
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdir();
}
try{
file.transferTo(dest);
}catch (Exception e){
e.printStackTrace();
}
String path = filePath+fileName;
System.out.println(result);
System.out.println(path);
return result;
}
}
這里的上傳文件的路徑為你存儲(chǔ)文件的文件夾的絕對(duì)路徑
UUID.randomUUID()的作用是生成文件名的唯一識(shí)別碼肖揣,讓你上傳的文件名唯一民假,方便存入數(shù)據(jù)庫(kù)并讀取。
我最后上傳文件在文件夾里是這樣的:
最后歡迎訪問(wèn)我的個(gè)人博客:我的個(gè)人博客