通过curl上传文件
curl是linux系统中常用的数据传输命令,可以支持DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS...等各种协议,通常用来在命令行中发送http的post请求,类似于postman的工作。
在有些场景中,需要我们在post请求中上传本地文件,通过curl来实现可以传参如下,通过 @+文件路径(相对路径或绝对路径) 表示传输的是文件
curl -X POST http://<someUrl> -F "file=@/path/to/aFile.txt"
类似于postman中的
curl上传文件在Spring的RestTemplate中实现方式
以上curl和postman上传文件的方式,在Spring包中的RestTemplate中也有着对应的实现,如下:
File file = File.createTempFile("aaa","bbb");
FileUtils.writeStringToFile(file, mapper.writeValueAsString(message), "UTF-8");
MultiValueMap<String, Object> values = new LinkedMultiValueMap<String, Object>();
values.add("file", new FileSystemResource(file)); // 这里通过给MultiValueMap传一个FileSystemResource,显示curl的 @/path/aFile 的效果
restTemplate.postForObject(URL, values, String.class);