当前位置:   article > 正文

使用RestTemplate在服务之间进行MultipartFile格式文件的传递_java 服务之间传递multipartfile

java 服务之间传递multipartfile

MultipartFile是Spring框架中提供的一种用于文件处理的接口,一般用于前端进行文件的上传,后端使用MultipartFile类型来进行文件的接收;当使用RestTemplate的post方法进行来传递接收到的MultipartFile类型文件时,由于RestTemplate中并没有对应的转化器(Converter),无法将文件对象打包进body中,所以会抛出异常。

办法:先将MultipartFile类型的对象转化为File类型,一下为转换的方法

  /**
     *  将MultiPartFile转化为File
     * @param path
     * @param multiFile
     * @return https://blog.csdn.net/qgnczmnmn/article/details/107087347
     * @throws IOException
     */
    public File multiPartFileToFile(String path, MultipartFile multiFile) {
        try {
            File file=new File(path);
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            file.createNewFile();
            multiFile.transferTo(file);
            return file;
        } catch (IOException e) {
            throw new PlanException(EamErrorType.MC_FILE_EXCEPTION.getValue(), e.getMessage());
        }
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

实例:

@Override
    public void uploadMdAndApply(MicrolightMaterialUploadDTO microlightMaterialUploadDTO) {
        // - 获得文件的尾缀,存储在本地空间
        MultipartFile file = microlightMaterialUploadDTO.getFile();
        String name = file.getOriginalFilename();
        String suffix = name.substring(name.lastIndexOf(".") + 1);
        String path= rpcConfigInfo.getFileUrl()+suffix;
        File tempFile =  this.multiPartFileToFile(path, file);

        // - 调用mc的http接口的文件上传
        MultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
        map.add("file",new FileSystemResource(tempFile));
        map.add("type",microlightMaterialUploadDTO.getType());
        HttpHeaders headers = new HttpHeaders();
        headers.add("tokenid", PermissionAspect.getTokenid());
        headers.add("Content-Type",  MediaType.MULTIPART_FORM_DATA_VALUE);
        headers.add("Accept", "*/*");
        headers.add("Connection", "keep-alive");
        headers.add("User-Agent", "PostmanRuntime/7.28.4");
        headers.add("Accept-Encoding", "gzip, deflate, br");
        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity(map, headers);
        ResponseEntity<JSONObject> entity = null;
        try {
            entity = restTemplate.postForEntity(rpcConfigInfo.getMcFileUrl(), requestEntity, JSONObject.class);
        } catch (RestClientException e) {
            throw new PlanException(EamErrorType.PC_MC_ERROR.getValue(), e.getMessage());
        }
        // - 删除文件
        try {
            Path path1 = Paths.get(path);
            Files.deleteIfExists(path1);
        } catch (IOException e) {
            e.printStackTrace();
        }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/302873
推荐阅读
相关标签
  

闽ICP备14008679号