SpringBoot 使用RestTemplate上传文件,亲测完整有效
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.io.File;
public class FileUploadExample {
public static void main(String[] args) {
// 文件路径
String filePath = "/path/to/your/file";
// 目标URL
String url = "http://yourserver.com/upload";
// 创建RestTemplate实例
RestTemplate restTemplate = new RestTemplate();
// 准备文件
File file = new File(filePath);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
// 设置文件部分
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", new FileSystemResource(file), file.getName());
// 创建请求实体
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
// 执行上传
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);
// 输出结果
System.out.println(response.getBody());
}
}
这段代码展示了如何使用Spring的RestTemplate
来上传文件。首先,我们创建了一个RestTemplate
实例,然后准备了要上传的文件。接着,我们设置了HTTP头部的Content-Type
为MediaType.MULTIPART_FORM_DATA
,以便能够处理多部分请求。之后,我们将文件作为请求体的一部分添加到MultiValueMap
中,并创建了一个HttpEntity
对象,它包含了请求体和头部信息。最后,我们调用postForEntity
方法发送了请求,并打印了服务器返回的响应体。
评论已关闭