文件上传和普通的传参还是有区别的,涉及到文件流的转换,写调用外部接口实现文件上传我在网上找了很多资料,大多数资料都不全,无法测试成功!
最后我找了一种方式,终于测试成功,分享给大家!直接上代码,复制可用!
public String uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
String contentType = file.getContentType(); //图片文件类型
String fileName = file.getOriginalFilename(); //图片名字
HttpHeaders headers = new HttpHeaders() ;
headers.setContentType(MediaType.APPLICATION_JSON);
MediaType type = MediaType.parseMediaType("multipart/form-data");
headers.setContentType(type);
String filePath = request.getSession().getServletContext().getRealPath("/")+file.getOriginalFilename();
File files = new File(filePath);
if(!files.exists()){
files.createNewFile();
}
// 转存文件
file.transferTo(files);
FileSystemResource resource = new FileSystemResource(files);
String strings = "";
try {
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
param.add("file", resource);
param.add("fileName", fileName);
String url = "" ;
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param, headers);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
strings = responseEntity.getBody() ;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// 返回图片的存放路径
return strings;
}
我展示的只是后台调用时候的处理,前端传文件的方式可以在网上找,资料很多!