Is your feature request related to a problem? Please describe. upload Multiple File only one can upload
Describe the solution you'd like feign.form.spring.SpringFormEncoder#encode original:
@Override
public void encode (Object object, Type bodyType, RequestTemplate template) throws EncodeException {
if (bodyType.equals(MultipartFile[].class)) {
val files = (MultipartFile[]) object;
val data = new HashMap<String, Object>(files.length, 1.F);
for (val file : files) {
data.put(file.getName(), file);
}
super.encode(data, MAP_STRING_WILDCARD, template);
} else if (bodyType.equals(MultipartFile.class)) {
val file = (MultipartFile) object;
val data = singletonMap(file.getName(), object);
super.encode(data, MAP_STRING_WILDCARD, template);
} else if (isMultipartFileCollection(object)) {
val iterable = (Iterable<?>) object;
val data = new HashMap<String, Object>();
for (val item : iterable) {
val file = (MultipartFile) item;
data.put(file.getName(), file);
}
super.encode(data, MAP_STRING_WILDCARD, template);
} else {
super.encode(object, bodyType, template);
}
}
new:
@Override
public void encode (Object object, Type bodyType, RequestTemplate template) throws EncodeException {
if (bodyType.equals(MultipartFile[].class)) {
val files = (MultipartFile[]) object;
val data = Collections.singletonMap(files[0].getName(), object);
super.encode(data, MAP_STRING_WILDCARD, template);
} else if (bodyType.equals(MultipartFile.class)) {
val file = (MultipartFile) object;
val data = singletonMap(file.getName(), object);
super.encode(data, MAP_STRING_WILDCARD, template);
} else if (isMultipartFileCollection(object)) {
val iterable = (Iterable<?>) object;
val file =(MultipartFile) iterable.iterator().next();
val data = Collections.singletonMap(file.getName(), object);
super.encode(data, MAP_STRING_WILDCARD, template);
} else {
super.encode(object, bodyType, template);
}
}
Comment From: almirus
for example (upload two optional files: base64body, log) (controller) https://github.com/almirus/issueator/blob/d86e38500231bff3f7b5ef26d8e9680e956775a0/src/main/java/com/technology/issueator/controller/JiraController.java#L62
(service) https://github.com/almirus/issueator/blob/d86e38500231bff3f7b5ef26d8e9680e956775a0/src/main/java/com/technology/issueator/service/IssueService.java#L51
(feign client) https://github.com/almirus/issueator/blob/d86e38500231bff3f7b5ef26d8e9680e956775a0/src/main/java/com/technology/issueator/client/JiraClient.java#L24
Comment From: OlgaMaciaszek
@akai1223 Please learn how to properly format code and logs.
SpringFormEncoder is maintained in this repo. Any issues regarding regarding that encoder should be reported there. Therefore, closing this issue.