RestTemplate后台上传文件
springboot启动类上加,没有自己new一个
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
@Autowired
private RestTemplate restTemplate;
//本方法是先接受前端的文件,然后后台进行上传
@Override
public SysResult saveProcess(MultipartFile uploadfile, String filename) {
//判断文件是否为空
if (uploadfile.isEmpty()) {
return SysResult.build(SysResult.ERROR_CODE,"文件为空");
}
String orignname = uploadfile.getOriginalFilename().toLowerCase();
if(!orignname.endsWith(".zip")){
return SysResult.build(SysResult.ERROR_CODE,"文件不是zip");
}
try{
Map<String,Object> map = new HashMap<>();
map.put("filename",filename);
map.put("in",uploadfile);
//后台接收的地址
String url = "http://localhost:8092/process/saveProcess";
HttpHeaders headers = new HttpHeaders(); // http请求头
headers.setContentType(MediaType.APPLICATION_JSON_UTF8); // 请求头设置属性
headers.setContentType(MediaType.parseMediaType("multipart/form-data; charset=UTF-8"));
File files = new File("E:/process/"+orignname);
//临时文件
uploadfile.transferTo(files);
FileSystemResource resource = new FileSystemResource(files);
MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
form.add("uploadfile", resource);
form.add("filename",filename);
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(form, headers);
ResponseEntity<SysResult> result = restTemplate.exchange(url, HttpMethod.POST, httpEntity, SysResult.class);
return result.getBody();
}catch (Exception e){
e.printStackTrace();
return SysResult.build(SysResult.ERROR_CODE,SysResult.ERROR_MSG);
}
}
希望对大家有所帮助