个人博客(后台)——文件上传本地

270 阅读1分钟

封装文件上传工具类

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;
}

测试:

upload.png