java.io.FileInputStream["fd"])" type="hidden"/>

MultipartFile文件上传报错 $StandardMultipartFile["inputStream"]->java.io.FileInputStream["fd"])


报错内容如上,其他内容如:Type definition error: [simple type, class java.io.FileDescriptor]

 

1、controller代码

@RestController @Api(value = "OSS文件服务接口") @RequestMapping("/manage/oss/") public class OssFileController { private final OssFileService ossFileService; @PostMapping("file/upload") @ApiOperation(value = "文件上传", httpMethod = "POST") public Response<?> uploadFile(MultipartFile file) { return ossFileService.uploadFile(file); } }

2、service编码

public Response<?> uploadFile(MultipartFile file) { //...其他代码 try { File f = File.createTempFile("spw-", file.getOriginalFilename()); file.transferTo(f); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); MultiValueMap formDataMap = new LinkedMultiValueMap(); FileSystemResource fs = new FileSystemResource(f);//重点 这个才是restTemplate能传递的实体 formDataMap.put(k, Collections.singletonList(fs)); HttpEntity<String> entity = new HttpEntity(formDataMap, headers); restTemplate.postForObject("url", entity, Response.class); f.deleteOnExit(); return ossUploadPubResDTO == null ? Response.createError("上传文件失败") : Response.createSuccess(ossUploadPubResDTO); } catch (IOException e) { log.error("上传文件失败", e); return Response.createError("上传文件失败"); } }

3、结论

      restTemplate不能发送form表单参数时,MultipartFile和file都不能正确识别,需包装为FileSystemResource才可

      可创建临时文件

 

showtooltip


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM