- 简介
- 上传文件
- 下载文件
我们在开发过程中经常会遇到前端上传文件到服务A,服务A再把文件发送到服务B;或者前端发送请求到服务A下载文件,然后服务A从服务B处下载文件。下面文档简单介绍下我自己的实现方式。
上传文件- 首先我们在服务A编写上传文件的接口。
@PostMapping("/import")
public CommonResult import(MultipartHttpServletRequest request) {
MultipartFile file = request.getFile("upload");
if (file == null || file.isEmpty()) {
return CommonResult.failed("Please select import file!");
}
}
- 我们得把文件发送到服务B。CommonResult 是自定义的通用返回对象。restTemplate.postForEntity是org.springframework下spring-web中提供的方法
private String sendPost(File file) throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap map = new linkedMultiValueMap<>();
FileSystemResource resource = new FileSystemResource(file);
map.add("upload", resource);
String urlCom = url;//这里是服务B的接口地址
// 组装请求体
HttpEntity requestEntity = new HttpEntity<>(map, headers);
ResponseEntity commonResultResponseEntity = restTemplate.postForEntity(urlCom, requestEntity, CommonResult.class);
if (commonResultResponseEntity.getBody().getCode() == 200) {
file.deleteOnExit();
String content = commonResultResponseEntity.getBody().getData().toString();
return content;
}
return null;
}
- 服务B中接口。
@PostMapping("/CustomBroker")
public CommonResult CustomBroker(MultipartHttpServletRequest request) {
MultipartFile file = request.getFile("upload");
return CommonResult.success(true);
}
CommonResult.java
public class CommonResult下载文件{ private long code; private String message; private T data; protected CommonResult() { } protected CommonResult(long code, String message, T data) { this.code = code; this.message = message; this.data = data; } public static CommonResult success(T data) { return new CommonResult (ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data); } public static CommonResult success(T data, String message) { return new CommonResult (ResultCode.SUCCESS.getCode(), message, data); } public static CommonResult failed(IErrorCode errorCode) { return new CommonResult (errorCode.getCode(), errorCode.getMessage(), null); } public static CommonResult failed(IErrorCode errorCode,String message) { return new CommonResult (errorCode.getCode(), message, null); } public static CommonResult failed(String message) { return new CommonResult (ResultCode.FAILED.getCode(), message, null); } public static CommonResult failed() { return failed(ResultCode.FAILED); } public static CommonResult validateFailed() { return failed(ResultCode.VALIDATE_FAILED); } public static CommonResult validateFailed(String message) { return new CommonResult (ResultCode.VALIDATE_FAILED.getCode(), message, null); } public static CommonResult unauthorized(T data) { return new CommonResult (ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getMessage(), data); } public static CommonResult forbidden(T data) { return new CommonResult (ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getMessage(), data); } public long getCode() { return code; } public void setCode(long code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getData() { return data; } public void setData(T data) { this.data = data; } }
下载文件跟上传文件类似。



