九、文件上传
1,效果图
(1)下面通过样例演示如何使用 RestTemplate 上传文件。这里使用 Form 表单的方式进行提交,上传时除了一个文件外还附带有两个自定义参数。
(2)接收端收到文件后会打印出相关参数、以及文件相关数据,并返回成功信息。
(3)发送方收到反馈后将反馈信息打印出来:

2,样例代码
(1)文件发送端代码如下:
@RestController
public class HelloController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/test")
public void test() {
// 上传接口
String url = "http://localhost:8080/upload";
// 待上传的文件
String filePath = "/Users/hangge/Desktop/test.txt";
// 封装请求参数
FileSystemResource resource = new FileSystemResource(new File(filePath));
MultiValueMap param = new LinkedMultiValueMap<>();
param.add("myFile", resource);
param.add("param1", "12345");
param.add("param2", "hangge");
// 发送请求并输出结果
System.out.println("--- 上传文件 ---");
String s = restTemplate.postForObject(url, param, String.class);
System.out.println(s);
}
} (2)文件接收端代码如下:
为方便演示,接收端这边的代码比较简单。如果想要进一步操作,比如:文件重命名、文件保存、相关上传参数的配置,可以参考我之前写的文章:
@RestController
public class HelloController {
@PostMapping("/upload")
public String upload(String param1, String param2, MultipartFile myFile) {
System.out.println("--- 接收文件 ---");
System.out.println("param1:" + param1);
System.out.println("param2:" + param2);
String originalFilename = myFile.getOriginalFilename();
System.out.println("文件原始名称:" + originalFilename);
try {
String string = new String(myFile.getBytes(), "UTF-8");
System.out.println("文件内容:" + string);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 处理文件内容...
return "OK";
}
}原文出自:www.hangge.com 转载请保留原文链接:https://www.hangge.com/blog/cache/detail_2518.html