封装文件上传工具类
utils/FileUtils.java:
package com.blog.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.util.UUID;
/**
* 文件上传工具类
*/
public class FileUtils {
/**
* 文件上传工具类服务方法
* file -- 文件字节流
* filePath --- 文件存储路径
* fileOriginName --- 文件源名称
*
* 返回新文件名称
*/
public static String uploadFile(byte[] file,String filePath,String fileOriginName) throws Exception{
File targetFile = new File(filePath);
String newFileName = getFileName(fileOriginName);//生成一个新名称
if(!targetFile.exists()){//存储路径不存在则创建该路径
targetFile.mkdirs();
}
/**
* 一参数可以为file对象或者路径--二参数为true是为在文件尾部追加,否则覆盖文件
* FileOutputStream(File file, boolean append);
* FileOutputStream(String name, boolean append);
*/
FileOutputStream outputStream = new FileOutputStream(filePath+newFileName);
outputStream.write(file);
outputStream.flush();//清空缓冲区数据,作用是把缓冲区的数据强行输出
outputStream.close();//方法关闭了读写流
return newFileName;
}
/**
* 生成新的文件名
*/
private static String getFileName(String fileOriginName){
//获取传入文件的后缀名
String suffix = fileOriginName.substring(fileOriginName.lastIndexOf("."));//根据传递的字符串根据点截取获取最后一个就是后缀名
//生成一个uuid的文件名
String fileName = UUID.randomUUID().toString().replace("-","");
return fileName+suffix;
}
}
controller:
/**
* 文件上传
* 返回为上传的文件路径
*/
@RequestMapping("fileUpload")
public String fileUpload(MultipartFile file) throws Exception{
//获取文件类型
// String contentType = file.getContentType();
//获取文件名称
String fileName = file.getOriginalFilename();
//文件存储路径---当前项目的resources文件夹的assets/images中
String filePath = "E:\\app\\blog\\src\\main\\resources\\assets\\images\\";
try{
//调用文件自定义工具类fileUtil,处理文件(生成新名称,并写入),将文件写入指定位置
filePath = filePath + FileUtils.uploadFile(file.getBytes(),filePath,fileName);
}catch (Exception e){
e.printStackTrace();
}
return filePath;
}