RestTemplate 发送文件

本文介绍如何使用Spring的RestTemplate来发送文件流到服务器。通过示例代码展示了客户端配置及文件上传过程,并提供了服务器端的处理方式。

resttemplate 发送 inputstream流到服务端

客户端

RestTemplate restTemplate = new RestTemplate();

		SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
		requestFactory.setBufferRequestBody(false);
		restTemplate.setRequestFactory(requestFactory);

		File file = new File('C:\\Users\\xx.png')
		InputStream inputStream = new FileInputStream(file)

		MultiValueMap<String,Object> parts = new LinkedMultiValueMap<>();
		try {
			parts.add("file", new MultipartFileResource(inputStream,"test"));
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.MULTIPART_FORM_DATA);
		HttpEntity<MultiValueMap<String,Object>> request = new HttpEntity<>(parts, headers);
		def ret =restTemplate.exchange("http://localhost:9303/upload", HttpMethod.POST, request, Void.class);

	private class MultipartFileResource extends InputStreamResource {
		private String filename;

		public MultipartFileResource(InputStream inputStream, String filename) {
			super(inputStream);
			this.filename = filename;
		}
		@Override
		public String getFilename() {
			return this.filename;
		}
		@Override
		public long contentLength() throws IOException {
			return -1; // we do not want to generally read the whole stream into memory ...
		}
	}

controller

	@PostMapping("/upload")
	public Object upload(HttpServletRequest request, MultipartFile file) {
            ...
    }

转载于:https://my.oschina.net/fuye/blog/850432

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值