代码思路
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最大请求内容长度,请求根本不会进去后台。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)