当前位置: > > > SpringBoot - 网络请求模版类RestTemplate使用详解6(上传文件)

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";
    }
}
评论0