什么是MultipartFile
MultipartFile是spring类型,代表HTML中form-data方式上传的文件,包含二进制数据+文件名称。【来自百度知道】
上传文件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>
我这里是从我项目中截取出来的一小部分并做了简化,主要部分如上所示。
这里就有我踩过的坑了!
首先第一点,上传文件必须是发送POST请求,所以form表单中必须标明是POST请求(method="post")
第二点就是form表单中必须加上 enctype="multipart/form-data" 这个属性,这是要告诉后台这条是一个multipart请求,不然后台识别不出这个请求是一个上传文件请求
后台上传文件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;
}
}
这里的上传文件的路径为你存储文件的文件夹的绝对路径
UUID.randomUUID()的作用是生成文件名的唯一识别码,让你上传的文件名唯一,方便存入数据库并读取。
我最后上传文件在文件夹里是这样的:
最后欢迎访问我的个人博客:我的个人博客