RestTemplate上传文件信息到其他服务器

public ResultVo uploadPackage(@RequestBody MultipartFile file) {
    //非空校验
    if (file == null) {
        return ResultVo.error("上传文件不能为空");
    }
    //获取文件名称
    String filename = file.getOriginalFilename();
    //判断文件格式是否正确
    if (!".zip".equals(filename.substring(filename.lastIndexOf(".")))) {
        return ResultVo.error("文件格式不正确");
    }
    //获取系统临时缓存目录
    String tempFilePath = System.getProperty("java.io.tmpdir") + filename;
    //生成一个临时文件
    File file = new File(tempFilePath);
    try {
        //将源文件内容转移到临时文件中
        multipartFile.transferTo(file);
    } catch (IOException e) {
        e.printStackTrace();
    }
    //把临时文件转换成FileSystemResource
    FileSystemResource resource = new FileSystemResource(tempFilePath);
    HttpHeaders headers = new HttpHeaders();
    //设置头格式
    MediaType type = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE);
    headers.setContentType(type);
    MultiValueMap<String, Object> bodyMap = new LinkedMultiValueMap<>();
    //由于上传文件不能直接使用MultipartFile类型来进行上传,需要转换为FileSystemResource类型进行上传
    bodyMap.add("file", resource);
    HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(bodyMap, headers);
    ResponseEntity<String> responseEntity = restTemplate.exchange("url", HttpMethod.PUT, httpEntity, String.class);
    //删除临时文件
    try {
        file.delete();
    } catch (Exception e) {
        logger.error("删除临时文件失败 -> " + e.getMessage());
        e.printStackTrace();
    }
    if (HttpStatus.CREATED.value() == responseEntity.getStatusCodeValue()) {
        return ResultVo.ok();
    } else {
        logger.error("上传文件失败");
        return ResultVo.error("上传文件失败");
    }
}
posted @   Anhk丶  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示