1.controller层

@PostMapping("/upload")
    public Resp upload(@RequestParam MultipartFile multipartFile, HttpServletRequest request) throws IOException {
        modelService.upload(multipartFile, request);
        return Resp.justSuccess();
    }

2.service层

    @Transactional(rollbackFor = Exception.class)
    public void upload(MultipartFile multipartFile, HttpServletRequest request) throws IOException {
        //获取前端上传的文件名称
        String originalFileName = multipartFile.getOriginalFilename();
        //取文件名下标,给文件重命名的时候使用
        String suffix = originalFileName.substring(originalFileName.indexOf("."));
        //取一个随机id给文件重命名使用
        String uuid = UUID.randomUUID().toString();
        //你的接收的文件新的名字
        String filename = uuid+suffix;
        String uri = request.getSession().getServletContext().getRealPath("/");
        System.out.println(uri);
        //在项目新建一个 你重新生成名称的文件
        File file = new File(uri+ "/" + filename);
        //将接收的到的 multipartFile 类型的文件 转为 file
        multipartFile.transferTo(file);
        //获取接收到的并存在项目本地的文件,这样你就可以拿着这个文件随意处理啦
        String filePath = file.getAbsolutePath();

        String input = FileUtils.readFileToString(file,"UTF-8");
        
        File f = new File(file.toURI());
        if (f.delete()){
            log.info("删除成功");
        }else {
            log.info("删除失败");
        }
    }

3.postman测试
在这里插入图片描述
在这里插入图片描述
这里选择你要上传的本机文件就可以了。

这种方式其实就是我们先把文件流临时保存在服务器的默认目录里,等到我们用完文件后就可以把它删除了,否则会占用服务器的一些内存。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐