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