resttemplate 文件流怎么上传文件流

& & & & 在 Spring 3.0 中可以通过&
对象自定义请求头信息,如:
private static final String APPLICATION_PDF = "application/pdf";
RestTemplate restTemplate = new RestTemplate();
public void acceptHeaderUsingHttpEntity() throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.setAccept(singletonList(MediaType.valueOf(APPLICATION_PDF)));
ResponseEntity&byte[]& response = restTemplate.exchange("/file/123",
new HttpEntity&byte[]&(headers),
byte[].class);
String responseText = PdfTextExtractor.getTextFromPage(new PdfReader(response.getBody()), 1);
assertEquals("Some text in PDF file", responseText);
& & & & 在 Spring 3.1 中有了一个更强大的替代接口& ,这个接口只有一个方法: intercept(HttpRequest request, byte[] body, & & ClientHttpRequestExecution execution),下面是一个例子:
private static final String APPLICATION_PDF = "application/pdf";
RestTemplate restTemplate = new RestTemplate();
public void acceptHeaderUsingHttpRequestInterceptors() throws Exception {
ClientHttpRequestInterceptor acceptHeaderPdf = new AcceptHeaderHttpRequestInterceptor(
APPLICATION_PDF);
restTemplate.setInterceptors(singletonList(acceptHeaderPdf));
byte[] response = restTemplate.getForObject("/file/123", byte[].class);
String responseText = PdfTextExtractor.getTextFromPage(new PdfReader(response), 1);
assertEquals("Some text in PDF file", responseText);
class AcceptHeaderHttpRequestInterceptor implements ClientHttpRequestInterceptor {
private final String headerV
public AcceptHeaderHttpRequestInterceptor(String headerValue) {
this.headerValue = headerV
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
HttpRequestWrapper requestWrapper = new HttpRequestWrapper(request);
requestWrapper.getHeaders().setAccept(singletonList(MediaType.valueOf(headerValue)));
return execution.execute(requestWrapper, body);
阅读(...) 评论()spring(2)
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
HttpEntity&byte[]& httpEntity = new HttpEntity&(FileTools.toByteArray(file), headers);
HttpEntity&String& response = restTemplate.exchange(url, HttpMethod.PUT, httpEntity, String.class);
移动要为resttemplate配置上APPLICATION_OCTET_STREAM对应的转换器
id="restTemplate" class="org.springframework.web.client.RestTemplate"&
name="requestFactory"&
class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory" &
ref="httpClient"/&
name="connectTimeout" value="${http.connect.timeout}"/&
name="readTimeout" value="${http.read.timeout}"/&
name="errorHandler"&
class="org.springframework.web.client.DefaultResponseErrorHandler"/&
name="messageConverters"&
class="org.springframework.http.converter.FormHttpMessageConverter"/&
class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter"/&
class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/&
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/&
class="org.springframework.http.converter.StringHttpMessageConverter"&
name="supportedMediaTypes"&
&text/charset=UTF-8&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1310次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'springmvc RestTemplate文件上传
在使用springm提供rest接口实现文件上传时,有时为了测试需要使用RestTemplate进行调用,那么在使用RestTemplate调用文件上传接口时有什么特别的地方呢?实际上只需要注意一点就行了,就是创建文件资源时需要使用org.springframework.core.io.FileSystemResource类,而不能直接使用java.io.File对象。
Controller中的rest接口代码如下:
@ResponseBody
@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
public String upload(String fileName, MultipartFile jarFile) {
// 下面是测试代码
System.out.println(fileName);
String originalFilename = jarFile.getOriginalFilename();
System.out.println(originalFilename);
String string = new String(jarFile.getBytes(), "UTF-8");
System.out.println(string);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
// TODO 处理文件内容...
return "OK";
使用RestTemplate测试上传代码如下:
public void testUpload() throws Exception {
String url = "https://127.0.0.1:8080/test/upload.do";
String filePath = "C:\\Users\\MikanMu\\Desktop\\test.txt";
RestTemplate rest = new RestTemplate();
FileSystemResource resource = new FileSystemResource(new File(filePath));
MultiValueMap param = new LinkedMultiValueMap();
param.add("jarFile", resource);
param.add("fileName", "test.txt");
String string = rest.postForObject(url, param, String.class);
System.out.println(string);
String string = rest.postForObject(url, param, String.class);可以换成:
HttpEntity<MultiValueMap> httpEntity = new HttpEntity<MultiValueMap>(param);
ResponseEntity responseEntity = rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
System.out.println(responseEntity.getBody());}

我要回帖

更多关于 resttemplate上传文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信