spring boot 用RestTemplate post 在服务器间传送文件
不同公司间传数据是件麻烦的事情,协商格式会搞死人。主机厂会利用EDI。低成本而可靠的方式是己方系统导出excel文档,发送;对方接收,导入对方系统。看似麻烦,实际上前期协调和后期升级都会很简单。
为了可靠,不能直接发到对方系统上,而是先注册个网站,租个服务器,将excel发到服务器上。对方去服务器上取文件。
本地服务器上传到远程服务器
// 上传文件
FileSystemResource fileSystemResource = new FileSystemResource(fileNameWithPath);
if (!fileSystemResource.exists()) {//文件不存在处理
}
MediaType type = MediaType.parseMediaType("multipart/form-data");
headers.setContentType(type);
//headers.set("Cookie", cookies);//session用于验证身份
MultiValueMap<String, Object> form = new LinkedMultiValueMap<String, Object>();
form.add("file", fileSystemResource);
//form.add("pass", finalpass);;//用于验证身份
HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(form, headers);
responseEntity = restTemplate.postForEntity(urlTransfer, files, String.class);//发送
//此处要添加错误处理
String result = responseEntity.getBody().toString();
从远程服务器下载到本地服务器
HttpHeaders headers = new HttpHeaders();
HttpEntity<Resource> httpEntity = new HttpEntity<Resource>(headers);
ResponseEntity<byte[]> response = restTemplate.exchange(getFilePath, HttpMethod.GET, httpEntity, byte[].class);
if (response.getStatusCodeValue() != 200) {//异常处理
}
//写入本地
try {
File file = new File(path + File.separator + fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(response.getBody());
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
作者:张瑞153169
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,在此感谢!