SpringBoot项目实现单文件上传(一)

前言

       文件的上传和下载是所有后端程序员会经常用到的操作,最近Springboot项目恰好有文件上传与下载的需求,为了增强记忆,就记录下来,若是其中有哪些不足的地方,请指出来,增强学习交流。

配置文件准备工作

首先,先在 application.yml 配置文件中配置上传文件限制,这个根据自身需求来做调整。

其次,指定需将文件上传到哪个服务器下的具体路径。

工具类准备工作

UploadFolderEnum 类主要是将文件存在服务器具体某个文件下,以及其文件格式等。

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public enum UploadFolderEnum {
    IMAGE("imageWeb","jpg","jpg,png,jpeg"),
    PDF("userPdf","pdf","pdf"),
    HTML("userHtml","html","html"),
    IMAGE_APP("imageApp","jpg","jpg,png,jpeg"),
    DOC("userDoc","doc","doc"),
    EXCEL("config","xlsx","xlsx"),

    UploadFolderEnum(String folderName,String suffix) {
        this.folderName = folderName;
        this.suffix=suffix;
    }

    UploadFolderEnum(String folderName,String suffix,String fileType) {
        // 文件路径
        this.folderName = folderName;
        // 默认后缀
        this.suffix=suffix;
        // 文件 准许后缀类型
        this.fileType=fileType;
    }

    private   String  folderName;
    private   String  suffix;
    private   String  fileType;
    public String getFolderName() {
        return folderName;
    }

    public String  doDateFilePath(){
        return  "/"+this.folderName+"/"+ getNowDate();
    }
    public String getNowDate(){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String time = df.format( new Date(  ) );
        return time;
    }

    public String getDefaultFileName(String suffix){
        if(fileType.contains(suffix)){
            return CommonUtil.retrieveUUID()+"."+suffix;
        }
        return  getDefaultFileName();
    }

    public String getDefaultFileName(){
       return   CommonUtil.retrieveUUID()+"."+suffix;
    }
}

单文件上传

引入服务器IP地址,文件存放路径,文件命名格式。

单文件上传的核心代码,这是相对比较简单的方式,都是一些业务代码。

@PostMapping("/uploadFile")
@ApiOperation(value = "文件上传 单文件")
public ObjectRestResponse Upload(@RequestParam("file") MultipartFile file) {
    //记录日志
    log.info("开始上传文件!");
    //文件判断为空
    if (file.isEmpty()) {
        return ObjectRestResponse.error("上传失败,请选择文件");
    }

    //获取文件原始名称
    String fileOriginalName = file.getOriginalFilename();
    //设置文件前缀
    String fliePrefix;
    //设置文件后缀
    String fileSuffix;
    fliePrefix = UUID.randomUUID().toString().replace("-", "");
    fileSuffix = fileOriginalName.split("\\.")[1];

    String newfilePath = image.doDateFilePath() + "/";
    //唯一服务地址
    String newfilePathOnly = basePath + newfilePath;

    //判断地址是否存在
    File fileUIS = new File(newfilePathOnly);
    //如果不存在文件夹创建文件夹
    if (!fileUIS.exists()) {
        fileUIS.mkdirs();
    }
    String OnlyStr = newfilePathOnly + fliePrefix + "." + fileSuffix;
    //设置文件载入到的地址
    File dest = new File(OnlyStr);
    try {
        file.transferTo(dest);
        log.info("文件:" + fliePrefix + "." + fileSuffix + "上传成功");
        String filePath = fileIp + newfilePath + fliePrefix + "." + fileSuffix;
        Map<String, Object> object = new HashMap<>();
        object.put("filePath", filePath);
        object.put("UUID", fliePrefix);
        return ObjectRestResponse.success(object);
    } catch (IOException e) {
        log.error(e.toString(), e);
    }
    return ObjectRestResponse.error("上传失败!");
}

 

这就是简单的单文件上传到服务器上的一种方式,若是存在不足,欢迎大家指出!!!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值