MultipartFile 文件对象保存到本地(服务器)文件夹
代码思路
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
// 将文件保存在服务器目录中
// 新生成的文件名称
String uuid = UUID.randomUUID().toString();
// 得到上传文件后缀
String originalName = file.getOriginalFilename();
String ext = "." + FilenameUtils.getExtension(originalName);
// 新生成的文件名称
String fileName = uuid + ext;
// 得到新的文件File对象
File targetFile = new File("D:\\sim-file\\", fileName);
// 开始复制文件
FileUtils.writeByteArrayToFile(targetFile, file.getBytes());
完整代码
public void saveFileByDirectory (MultipartFile file) {
try {
// 将文件保存在服务器目录中
// 文件名称
String uuid = UUID.randomUUID().toString();
// 得到上传文件后缀
String originalName = file.getOriginalFilename();
String ext = "." + FilenameUtils.getExtension(originalName);
// 新生成的文件名称
String fileName = uuid + ext;
// 复制文件
File targetFile = new File("D:\\sim-file\\", fileName);
FileUtils.writeByteArrayToFile(targetFile, file.getBytes());
} catch (IOException e) {
logger.error("保存文件到服务器(本地)失败",e);
}
}
应用场景
可以将生成好的uuid传回前台进行hidden保存,然后再次请求时,通过得到uuid文件名称和已知的(配置好的)文件路径就可以找到上传的文件了。
① 上传Excel时,需要对Excel进行预展示,这个时候就可以把展示的集合list和文件名称传回前台。集合list用来展示;文件名称用来传到后台进行读取文件入库保存。
疑问1:为什么不在前台界面通过集合list循环成json对象,通过post请求后台进行保存?
回答:当excel文件内容比较少时,是可行的,当Excel条数超过了500,1000条时,json对象超过了post最大请求内容长度,请求根本不会进去后台。