上传到服务器的文件再次上传
场景:
有时候提供给前端的服务并不是文件保存的服务,而需要服务再向别的服务提交文件
上传图片
接收图片
import org.springframework.web.multipart.MultipartFile;
@PostMapping("/uploadFile")
public ApiResponse<SFile> uploadFile(@RequestParam("file") MultipartFile file,
@RequestParam("id") String id) {
//上传图片
SFile sFile = sFileUtil.uploadFile(file);
return ApiResponse.success();
}
使用RestTemplate上传图片
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
u
@Value("${url}")
private String url;
@Autowired
private RestTemplate restTemplate;
/**
* 上传图片
*
* @param multipartFile
* @return
*/
public SFile uploadFile(MultipartFile multipartFile) {
try {
String url = "/file/s-file";
String l = Joiner.on("").join("http://", url, url);
log.info("uploadFileUrl:" + l);
//设置请求头
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("multipart/form-data");
headers.setContentType(type);
//设置请求体,注意是LinkedMultiValueMap
MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
form.add("file", multipartFile.getResource());
//用HttpEntity封装整个请求报文
HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(form, headers);
String s = restTemplate.postForObject( l, files, String.class);
JSONObject jsonObject = JSONUtil.parseObj(s);
return jsonObject.get("data", SFile.class);
} catch (Exception e) {
log.error("上传图片失败:" + e);
}
return null;
}
使用hutool上传图片
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
/**
* 上传图片
*
* @param multipartFile
* @return
*/
public SFile uploadFile(MultipartFile multipartFile) {
try {
String url = "http://127.0.0.1/file/s-file";
HttpResponse response = HttpRequest.post(l)
.form("file", multipartFile.getBytes(), multipartFile.getOriginalFilename())
.execute();
JSONObject jsonObject = JSONUtil.parseObj(response.body());
return jsonObject.get("data", SFile.class);
} catch (Exception e) {
log.error("上传图片失败:" + e);
}
return null;
}