おはようございます、 私のマイクロサービスとスプリングブートアプリケーションでは、ファイルアップロードエンドポイントで別のマイクロサービスを使用するフロントエンドの従業員マイクロサービスがあります。 呼び出しサービスはスプリングレストコントローラに基づいており、SpringブートアプリケーションでRestTemplateを使用してファイルアップロードエンドポイントを消費しようとしています。一言で言えば、PDFファイルをアップロードしようとしています。Multipartフォームデータを送信し、RestTemplate SpringブートでPDFをアップロードする方法
私はSO、次のポストを探求してきたが、私のために働いていないその:私は郵便配達でこれをテストし、次のエラー取得しています
jackson disable fail_on_empty_beans
:
org.springframework.httpを。 converter.HttpMessageNotWritableException:コンテンツを書き込めませんでした:クラスjava.io.FileDescriptorのシリアライザが見つかりませんでした。BeanSerializerを作成するためのプロパティが見つかりませんでした。
レストコントローラ############ @RestController
@RequestMapping(path = “/employee”)
public class EmployeeController {
private EmployeeService empService;
@RequestMapping(value =“/emp/load”, method = RequestMethod.POST)
public
@ResponseBody
ResponseEntity<byte[]> handleFileUpload(
@RequestParam("file") MultipartFile file, @RequestParam String a, @RequestParam String b, @RequestParam String c, @RequestParam String d, @RequestParam String e) throws Exception {
return empService.handleFileUpload(file, a, b, c, d, e);
}
}
サービス実装 -
すべてのヘルプは以下pleasee ....
が主成分であるが理解されよう
@Service
public class EmployeeServiceImpl implements EmployeeService{
@Value(“${emp.base.url}")
private String EMP_BASE_URI;
public ResponseEntity<byte[]>handleFileUpload(MultipartFile file, String a, String b, String c, String d, String e) {
final String uri = EMP_BASE_URI + "/upload";
RestTemplate restTemplate = getMappedRestTemplate();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<String, Object>();
params.add("file", file);
params.add(“a”, a);
params.add(“b”, b);
params.add(“c”, c);
params.add(“d”, d);
params.add(“e”, e);
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "multipart/form-data");
ResponseEntity<byte[]> response = restTemplate.exchange(uri, HttpMethod.POST, new HttpEntity<>(params, headers), byte[].class);
return new ResponseEntity<>(response.getBody(), response.getStatusCode());
}
private RestTemplate getMappedRestTemplate(){
RestTemplate restTemplate = new RestTemplate();
ObjectMapper newObjectMapper = new ObjectMapper();
newObjectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
newObjectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter=new MappingJackson2HttpMessageConverter();
FormHttpMessageConverter formConvertor = new FormHttpMessageConverter();
restTemplate.getMessageConverters().add(formConvertor);
restTemplate.getMessageConverters().add(mappingJacksonHttpMessageConverter);
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
return restTemplate;
}
}
私は次のようなエラーになっています:
は、HTTPメッセージの書き込みに失敗しました:org.sprinをgframework.http.converter.HttpMessageNotWritableException:コンテンツを書き込めませんでした:java.io.FileDescriptorクラスのシリアライザが見つかりませんでした。例外を回避するためにBeanSerializerを作成するためのプロパティが見つかりませんでした(SerializationFeature.FAIL_ON_EMPTY_BEANSを無効にします))(参照チェーン:org.springframework。 web.multipart.support.StandardMultipartFile ["inputStream"] - > java.io.FileInputStream ["fd"]);ネストされた例外はcom.fasterxml.jackson.databind.JsonMappingExceptionです。クラスjava.io.FileDescriptorのシリアライザが見つかりません。例外を回避するためにBeanSerializerを作成するためのプロパティは検出されません(SerializationFeature.FAIL_ON_EMPTY_BEANSを無効にします))(参照チェーン:org.springframework。 web.multipart.support.StandardMultipartFile ["inputStream"] - > java.io.FileInputStream ["fd"]
ご了承ください。 私はこの一日中立ち往生しています。