首页 > 其他分享 >SpringBoot 实现文件上传

SpringBoot 实现文件上传

时间:2022-10-06 18:00:20浏览次数:80  
标签:文件 dist SpringBoot upload file return 上传

参考:Java springboot进阶教程 文件上传功能实现 后端代码编写 常见错误分析与解决

在 Service 业务层接口中增加一个上传文件的方法

因为文件并不是上传至数据库中,所以不需要编写 Dao 数据接口层相关的代码

public interface XxxService {
    ...
    R upload(MultipartFile file);
}

在 Impl 实现类中实现这个方法

public class XxxServiceImpl implements XxxService {
    ...
    @Override
    public R upload(MultipartFile file) {
        // 对文件判空
        if (file.isEmpty()) {
            return R.error("文件为空");
            // 返回一个 R 类型给前端
            // R 为规定数据格式的统一返回对象
        }
        String originalFileName = file.getOriginalFilename();
        // ↑ 获取文件的名称
        String fileName = System.currentTimeMillis() + "." + originalFileName.substring(originalFileName.lastIndexOf(".") + 1);
        // ↑ 以当前时间戳对文件进行重命名,并保存文件名后缀
        String filePath = "/home/hsk/tempdownload/";
        // ↑ 设定文件的所要上传的服务器路径
        File dist = new File(filePath + fileName);

        // ↓ 对文件路径判空
        if (!dist.getParentFile().exists()) {
            dist.getParentFile().mkdirs();
            // ↑ 若文件路径不存在则创建
        }
        try {
            // ↓ 上传文件
            file.transferTo(dist);
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("上传失败");
        }
        return R.success("上传成功");
    }
}

Controller 表现层实现

这里为了方便没有写测试类,直接在 Controller 包下新建了 UploadTestContoller

package com.example.xxx.controller;

import ...

@RestController
@RequestMapping("/upload")
public class UploadTestController {
    @Autowired
    private XxxService xxxService;

    // ↓ 使用 put 方法上传
    @PutMapping
    private R upload(@RequestParam("file") MultipartFile file) {
        return xxxService.upload(file);
        // 所返回的是一个 R 对象
    }
}

测试

使用例如 Postman 等测试工具,我这里用的是 Apifox

看一下本地的目录:

上传成功!

标签:文件,dist,SpringBoot,upload,file,return,上传
From: https://www.cnblogs.com/hhsk/p/16758115.html

相关文章

  • springboot整合prometheus和grafana
    准备springBoot服务pom引入依赖<!--集成micrometer,将监控数据存储到prometheus--><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-r......
  • SpringBoot应用自定义logback日志
    概述默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件。如果在application.properties或application.yml配置,这样只能配置简......
  • JavaScript_大文件切片上传
    bigfile-chunk-upload功能大文件截取分块上传,带请求并发控制、错误重发功能。教程(以Vue为例)下载npminstallbigfile-chunk-upload引入//page.vueimportbigFile......
  • 文件操作
    一.字符编码1.字符编码简介1)字符编码只针对文本数据2)计算机内部存储数据的本质是二进制,也就是计算机只认识0和1的二进制3)之所以我们打出来的字可以被计算机识别是......
  • [答疑]我的eap文件打不开了,有办法恢复吗?
    ​​软件方法(下)分析和设计第8章连载[20210518更新]>>​​随心所想(10****075)8:58:09我的eap文件打不开了,有办法恢复吗?第五元素(50***16)8:58:30eap其实就是一个mdb文件。......
  • 6.4.3Log4j配置文件
    1.输出级别log4jrootLogger=debug,stdout,logfiledebug指的是日志记录器(Logger)的输出级别,主要输出级别及含义如下:.fatal:指出严重的错误事件将会导致应用程序的退......
  • DIY(02)——根据现有名单从原始文件中复制名单文件进入新的文件夹
    涉及到内容:1.获取文件名称,并根据名称与名单进行比对2.拷贝文件  %filenameisdeliverdataclc;clearall;closeall;%读取文件名fileFolder=fullfile('D:\z')......
  • go sftp上传文件
    gosftp上传文件步骤使用"golang.org/x/crypto/ssh"连接到Linux环境使用"github.com/pkg/sftp"创建sftp客户端然后传输文件packagemainimport("fmt""gith......
  • django找不到template文件的解决办法
    照着视频抄写第一个django展示html的页面如下图所示,然后运行之后提示template不存在的问题,这个坑怎么填啊?原来是因为主应用的settings文件下边少配置了一个东西,如下图所......
  • springboot 项目启动后访问不论什么请求的是spring的注册页面Please sign in Username
    解决方法:1.在启动类上添加注解@EnableAutoConfiguration(exclude={SecurityAutoConfiguration.class})2.或者:@SpringBootApplication(exclude={SecurityAutoConfigu......