使用RestService发送文件的最佳方法是什么?我有一个我必须发送到服务器的图像。
API需要以下POST数据:
image -> image I want to send
description -> text
title -> text
我可以发送一个具有所需值的对象来实现这一目标,还是我必须采取另一种方式?
class NewImage {
private Bitmap image;
private String description;
private String title;
}
答案 0 :(得分:2)
您应该使用多部分POST请求:
客户端:
MultiValueMap<String, Object> data = new LinkedMultiValueMap<>();
FileSystemResource image = new FileSystemResource("path_to_image");
String description = "description";
String title = "title";
data.put("image", image);
data.put("description", description);
data.put("title", title);
client.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE);
client.uploadImage(1, data);
用法:
class ObjectSupportingFormHttpMessageConverter extends FormHttpMessageConverter {
public ObjectSupportingFormHttpMessageConverter() {
addPartConverter(new ObjectToStringHttpMessageConverter(new DefaultConversionService()));
}
}
我知道这有一些样板,但在不久的将来会是improved。
在评论中反思这个问题:
您可以创建一个类:
{{1}}
然后将其用作转换器。这会将您的对象转换为text / plain部分。但是,也许最好将这个复杂的结构序列化为JSON,而不是在多部分帖子中发送它。