赞
踩
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<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(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。