SpringBoot - 网络请求模版类RestTemplate使用详解6(上传文件)
九、文件上传
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<String, Object> 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"; } }