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

您所在的位置:网站首页 resttemplate接收文件 使用RestTemplate在服务之间进行MultipartFile格式文件的传递

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

2024-06-01 20:20| 来源: 网络整理| 查看: 265

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()); } }

实例:

@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 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 requestEntity = new HttpEntity(map, headers); ResponseEntity 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(); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3