• springBoot中文件上传功能Api


    springBoot中文件上传功能Api

    01) 实现工具类FileUtil

    package com.example.fei.common.utils;
    
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.*;
    
    //文件上传工具类
    public class FileUtil {
        public static void uploadFile(byte[] file,String filePath,String fileName) throws IOException {
            File targetFile = new File(filePath);
            if (!targetFile.exists()) { // 创建目录
                targetFile.mkdirs();
            }
    
            FileOutputStream  out = new FileOutputStream(filePath + fileName);
            out.write(file);
            out.flush();
            out.close();
        }
    
        public static void uploadFile2(InputStream fileStream, String filePath, String fileName) throws IOException {
            File targetFile = new File(filePath);
            if (!targetFile.exists()) { // 创建目录
                targetFile.mkdirs();
            }
    
            FileOutputStream  out = new FileOutputStream(filePath + fileName);
            //开始复制
            int i = 0;
            byte[] bytes = new byte[1024];
            while((i = fileStream.read(bytes))!=-1) {
                out.write(bytes, 0, i);
            }
            out.close();
            fileStream.close();
        }
    
        // 采用MultipartFile的transfer() 实现上传
        public static void uploadFile3(MultipartFile uploadFile, String filePath, String fileName) throws IOException {
            File targetFile = new File(filePath + fileName);
            uploadFile.transferTo(targetFile);
        }
    
    
    }

    02) 在 Controller 中写方法

    package com.example.fei.controller;
    
    import com.example.fei.common.utils.FileUtil;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.multipart.MultipartFile;
    
    
    @RestController
    @RequestMapping("/file")
    public class FileController {
    
        // 上传文件
        @PostMapping("upload")
        public void upload(@RequestParam("file") MultipartFile file) {
    
            // String contentType = file.getContentType(); // 获取文件类型
            String fileName = file.getOriginalFilename(); // 图片名字
            String filePath  = "E:\\self_web\\git_dev\\vue\\zFei_springBoot\\target\\";
    
            try {
                FileUtil.uploadFile(file.getBytes(), filePath, fileName);
            } catch (Exception e) {
                // TODO: 处理异常信息
            }
        }
        // 上传文件2
        @PostMapping("upload2")
        public void upload2(@RequestParam("file") MultipartFile uploadFile) {
    
            String fileName = uploadFile.getOriginalFilename();
            String filePath  = "E:\\self_web\\git_dev\\vue\\zFei_springBoot\\target\\";
    
            try {
                FileUtil.uploadFile2(uploadFile.getInputStream(), filePath, fileName);
            } catch (Exception e) {
                // TODO: 处理异常信息
            }
    
        }
    
        // 上传文件3
        @PostMapping("upload3")
        public void upload3(@RequestParam("file") MultipartFile uploadFile) {
    
            String fileName = uploadFile.getOriginalFilename();
            String filePath  = "E:\\self_web\\git_dev\\vue\\zFei_springBoot\\target\\";
    
            try {
                FileUtil.uploadFile3(uploadFile, filePath, fileName);
            } catch (Exception e) {
                // TODO: 处理异常信息
            }
    
        }
    
        // 下载文件
        @GetMapping("download")
        public void download() {
        }
    }
    View Code

    03) postman 测试

  • 相关阅读:
    CF 676C. Vasya and String 尺取经典题目
    进制转换
    《Dotnet9》系列-开源C# Winform控件库1《HZHControls》强力推荐
    《Dotnet9》系列-开源C# Winform控件库强力推荐
    《Dotnet9》系列-开源C# WPF控件库强力推荐
    《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐
    《Dotnet9》系列-开源C# WPF控件库2《Panuon.UI.Silver》强力推荐
    《Dotnet9》系列之建站-Dotnet9建站20天感悟
    《Dotnet9》系列-开源C# WPF控件库1《MaterialDesignInXAML》强力推荐
    《Dotnet9》系列-FluentValidation在C# WPF中的应用
  • 原文地址:https://www.cnblogs.com/dafei4/p/16103729.html
Copyright © 2020-2023  润新知