`

RestTemplate 传输图片

 
阅读更多

使用RestTemplate 传输图片

public String addFood(String name, String desc, String price, String menu_category_id, MultipartFile[] files,

			
			String taste_ids,String language, String token) {

		Set<String> tempFilePath = new HashSet<>();
		String postForObject = null;
		try {
			MultiValueMap<String, Object> params = new LinkedMultiValueMap<String, Object>();
			params.add("name", name);
			params.add("desc", desc);
			params.add("price", price);
			params.add("menu_category_id", menu_category_id);
			params.add("taste_ids", taste_ids);
			params.add("token", token);
			params.add("language", language);
			if (null != files && files.length > 0) {
				for(MultipartFile file : files){
					//生成临时的文件,完成传输后再删除
					File tempFile = new File( UUID.randomUUID().toString()+file.getOriginalFilename());
					tempFilePath.add(tempFile.getAbsolutePath());
					//file.transferTo(tempFile);
					FileUtils.copyInputStreamToFile(file.getInputStream(), tempFile);
					FileSystemResource fileSystemResource = new FileSystemResource(tempFile);
					params.add("files", fileSystemResource);
				}
			}
			String path = iCateringPahtService.getCateringPath() + "addFoodAPI";

			HttpHeaders headers = new HttpHeaders();
			headers.set("Content-Type", "multipart/form-data");
			HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(params,headers);
			/*exchange = restTemplate.exchange(path, HttpMethod.POST, requestEntity,
					ResponseBean.class);*/
			postForObject = restTemplate.postForObject(path, requestEntity, String.class);

			
		} catch (Exception e) {
			
		}finally {
			//删除临时的文件
			if(null != tempFilePath && !tempFilePath.isEmpty()){
				for(String path : tempFilePath){
					File file = new File(path);
					if(file.exists()){
						file.delete();
					}
				}
			}
		}

		return postForObject;


	}

 

 

另一个controller接收即可

@RequestMapping(value="addFoodAPI",method=RequestMethod.POST)
	public String addFood(String name, String desc, String price, String menu_category_id, MultipartFile[] files, String taste_ids,String language, String token) {
		ResponseBean response = iCateringFoodService.addFood(name,desc,price,menu_category_id,files,taste_ids,language);
		return AESUtil.encrypResponseToString(response);
	}

 

 

 

 

 

分享到:
评论

相关推荐

    精讲RestTemplate文件上传下载与大文件流式下载.docx

    3. **封装请求参数**:使用`FileSystemResource`将本地文件封装成可以在HTTP请求中传输的对象。此外,还可以添加其他参数,如文本参数等。 4. **发送请求并处理结果**:通过`RestTemplate`的`postForObject`方法...

    RestTemplate实现服务间调用demo案例

    Spring Cloud为了解决这个问题,提供了一种简单易用的工具——RestTemplate。本示例将详细解析如何利用RestTemplate进行服务间的调用,帮助开发者理解并实践相关知识。 首先,我们要知道什么是RestTemplate。...

    使用RestTemplate进行feignclient调用

    然而,有时我们可能需要在不使用 Feign 注解的情况下,利用 RestTemplate 来实现类似的功能。本文将深入探讨如何使用 RestTemplate 进行 FeignClient 调用。 首先,让我们了解什么是 RestTemplate。RestTemplate 是...

    RestTemplate如何通过HTTP Basic Auth认证.docx

    RestTemplate 是 Spring 提供的一个用于发送 HTTP 请求的客户端工具,它可以方便地进行 GET、POST 等...在实际开发中,确保遵循安全最佳实践,不要明文传输敏感信息,如密码,而是应该使用安全的认证机制和传输层加密。

    使用httpclient方式和RestTemplate方式调用http及https接口

    HTTP(超文本传输协议)是用于在Web上传输数据的应用层协议,而HTTPS(安全套接层超文本传输协议)是HTTP的安全版本,它通过SSL/TLS加密来保护数据传输的安全性。 1. HttpClient方式: Apache HttpClient是一个流行...

    RestTemplate如何在Spring或非Spring环境下使用.docx

    RestTemplate restTemplate = new RestTemplate(); String url = "http://jsonplaceholder.typicode.com/posts/1"; String str = restTemplate.getForObject(url, String.class); System.out.println(str); } ``...

    springRestTemplate

    在 Spring Boot 中,由于其内置的自动配置特性,使用 RestTemplate 更加方便。让我们深入探讨一下 RestTemplate 的核心概念、功能以及如何在实际应用中进行设置和使用。 1. **什么是 RestTemplate?** RestTemplate...

    Spring RestTemplate

    Spring 3.0 RestTemplate

    RestTemplate的使用及需要注意的地方

    本文将深入探讨`RestTemplate`的使用方法以及在实际应用中需要注意的关键点。 首先,让我们了解`RestTemplate`的基本用法。它支持GET、POST、PUT、DELETE等多种HTTP方法。例如,如果你需要发送一个GET请求,可以...

    精讲RestTemplate自定义请求失败异常处理.docx

    RestTemplate restTemplate = new RestTemplate(); restTemplate.setErrorHandler(new MyRestErrorHandler()); ``` 这样,当请求失败时,我们的`handleError`方法会被调用,允许我们捕获并处理异常,而不是让程序...

    RestTemplate请求失败自动重试机制.docx

    "RestTemplate请求失败自动重试机制"就是一个解决这个问题的策略。在上一节中,我们学习了如何自定义RestTemplate的异常处理,但那并不适用于自动重试。本节我们将探讨如何利用Spring Retry库来实现RestTemplate的...

    SpringBoot系列之RestTemplate使用示例

    SpringBoot系列之RestTemplate使用示例,博主之前经常对接一些接口,所以发现写一些http请求比较麻烦,学习springboot的过程知道可以用 RestTemplate来做http请求,RestTemplate 是 Spring Framework 框架封装的基于...

    RestTemplate重试机制源码

    当某些接口超时、返回的数据有问题时需要对接口进行重试,但是有的接口需要重试三次,有的需要重试两次,有的不需要重试;有的返回连接超时才重试,...各种各样的场景,该源码实现了一个自定义定制化的重试RestTemplate

    RestTemplate的GET方法详解.docx

    - **使用占位符传参**:`getForObject()`支持使用占位符,例如`restTemplate.getForObject(url, PostDTO.class, "posts", 1)`,这样可以根据业务需求动态构造URL。 4. JSONPlaceholder作为测试工具 ...

    resttemplate multipartfile.pdf

    在 RestTemplate 中,multipartfile 是一种数据传输类型,主要用于文件上传和下载。下面将详细介绍 multipartfile 的概念、RestTemplate 上传文件的实现、RestTemplate 下载文件的实现,以及总结。 一、什么是 ...

    在main方法中如何不让RestTemplate打印debug日志.md

    在main方法中如何不让RestTemplate打印debug日志.md

    RestTemplate多种底层HTTP客户端类库的切换.docx

    RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory()); return restTemplate; } } ``` 3. 非Spring环境:若不在Spring环境中,可以直接实例化`RestTemplate`并传入`OkHttp3...

    SpringRestTemplate的一个客户端响应路由

    `Riptide`是由Zalando公司开发的一个库,它是对Spring`RestTemplate`的增强,特别关注于提高客户端的响应路由能力。响应路由允许我们在收到服务器响应后进行灵活的处理,比如根据不同的响应状态码或内容类型采取不同...

Global site tag (gtag.js) - Google Analytics