Java 后端接收MultipartFile类型文件接口(带参与不带参)

上网导航 2023-09-06 340 0条评论
摘要: list集合根据对象某一属性排序: Collections.sort(xxlist, Comparatro...

后端接收前端文件(不带参数


public interface TestService {
  String uploadFileTest(MultipartFile zipFile);
}
---------------------------------------------------------------------
@Service
public class TestServiceImpl implements TestService {
    private static final Logger logger = LoggerFactory.getLogger(TestServiceImpl.class);
    @Override
    public String uploadFileTest(MultipartFile zipFile) {
        // 文件保存路径
        String targetFilePath = "D:\\360_js";
        
        // 获取上传文件的文件名
        String fileName = zipFile.getOriginalFilename();
        
        // 真正地进行文件保存
        File targetFile = new File(targetFilePath + File.separator + fileName);
        // 以下为日志 可要可不要,如果文件保存失败,1.检查路径是否正确 2.是否已经存在该文件 3.可能需要抛出IOException
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream = new FileOutputStream(targetFile);
            IOUtils.copy(zipFile.getInputStream(), fileOutputStream);
            // 日志
            logger.info("------>>>>>>uploaded a file successfully!<<<<<<------");
        } catch (IOException e) {
            e.printStackTrace();
            return "IO异常";
        } finally {
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                logger.error("", e);
            }
        }
        return "success";
    }
}
-----------------------------------------------------------------
    @Autowired
    private TestService testService;
    
    @PostMapping("/upload")
    public String uploadFileTest(@RequestParam("uploadFile") MultipartFile zipFile) {
        return testService.uploadFileTest(zipFile);
    }

后端接收文件 以及接收多个参数

将文件定义成一个类的属性,将参数也定义成类的属性,如此 接收参数 和文件

实体类 entity   FileSaveReqVO.java
    @ApiModelProperty(value = "上传的文件", required = true)
    @NotNull(message = "上传文件不能为空")
    private MultipartFile file;
    @ApiModelProperty(value = "文件名称",hidden = true)
    private String Name;
    @ApiModelProperty(value = "文件地址", hidden = true)
    private String Url;
    ---------------------------------------------------------
接口 interface 
   void save(FileSaveReqVO reqVO);
impl层
@Service
public class KettleTransFileServiceImpl implements IKettleTransFileService {
    
    // 文件保存路径
    private String path = "D:\\360_js";
    // mapper层控制文件名称,文件地址保存在数据库
    @Autowired
    private FileMapper fileMapper;
    @Override
    public void save(FileSaveReqVO reqVO) {
        try {
            // 获取上传文件名称
            String fileName = reqVO.getFile().getOriginalFilename();
           
           // 真正地进行文件保存
            File destFile = new File(kettleHomePath + File.separator + fileName);
            reqVO.getFile().transferTo(destFile);
            
            } catch (IOException e) {
            throw WinExceptionUtil.winException(SchExceptionEnum.SAVE_KETTLE_FILE_ERROR, reqVO.getName());
        }
            // 将文件名称和地址保存在reqVO 便于保存到数据库
            reqVO.setName(fileName);
            reqVO.setUrl(path+ fileName);
            
            fileMapper.save(reqVO);
    }
}
controller层
    @PostMapping("/save")
    public String save(FileSaveReqVO reqVO) {
        fileService.save(reqVO);
        return "添加成功";
    }

使用postman测试时,记得将类型改成multipart/form-data 文件参数file 需要其他参数可以自行设计

Java 后端接收MultipartFile类型文件接口(带参与不带参)

当然我们大多数是不将上传的文件封装在类里面,而是另起一个实体,一个文件 接口

只是接收的时候接收参数 和文件 ,例如

public void updateFile(Entity entity, MultipartFize file) {
  ......
}

如果不会这种方式的话,留言告诉我 我再更新

文章版权及转载声明:

作者:上网导航本文地址:https://www.90xe.com/post/3742.html发布于 2023-09-06
文章转载或复制请以超链接形式并注明出处技术导航

分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏