I’m having a problem with Futter and Springboot when uploading files. I’m getting an error “Internal Server Error: Content type ‘application/octet-stream’ not supported” when trying to send a request to Springboot Web API.
Flutter:
<code> @override
Future<ResponseModel> save(
OnlineReceiptRegister dto, List<http.MultipartFile> files) async {
final url = '$baseUrl${'accounts_receivable/online_receipt_register'}';
try {
final request = http.MultipartRequest('POST', Uri.parse(url))
..headers.addAll(await authHeader)
..fields['dto'] = json.encode(dto.toJson())
..files.addAll(files);
final streamedResponse = await request.send();
final response = await http.Response.fromStream(streamedResponse);
return await ResponseUtil.getResponseModel(response);
} catch (error) {
rethrow;
}
}
</code>
<code> @override
Future<ResponseModel> save(
OnlineReceiptRegister dto, List<http.MultipartFile> files) async {
final url = '$baseUrl${'accounts_receivable/online_receipt_register'}';
try {
final request = http.MultipartRequest('POST', Uri.parse(url))
..headers.addAll(await authHeader)
..fields['dto'] = json.encode(dto.toJson())
..files.addAll(files);
final streamedResponse = await request.send();
final response = await http.Response.fromStream(streamedResponse);
return await ResponseUtil.getResponseModel(response);
} catch (error) {
rethrow;
}
}
</code>
@override
Future<ResponseModel> save(
OnlineReceiptRegister dto, List<http.MultipartFile> files) async {
final url = '$baseUrl${'accounts_receivable/online_receipt_register'}';
try {
final request = http.MultipartRequest('POST', Uri.parse(url))
..headers.addAll(await authHeader)
..fields['dto'] = json.encode(dto.toJson())
..files.addAll(files);
final streamedResponse = await request.send();
final response = await http.Response.fromStream(streamedResponse);
return await ResponseUtil.getResponseModel(response);
} catch (error) {
rethrow;
}
}
Springboot:
<code>@PostMapping("/online_receipt_register")
public ResponseEntity<GenericReturnDto<?>> save(
@RequestPart("dto") OnlineReceiptRegisterDto dto,
@RequestPart("files") MultipartFile[] files,
Errors errors) throws TransactionException{
LOG.info("ONLINE_RECEIPT_REGISTER - POST-CREATE {}", dto);
GenericReturnDto<OnlineReceiptRegisterDto> returnDto = new GenericReturnDto<>();
try {
if(!StringCustomUtils.isNULLOrEmptyString(StringCustomUtils.constraintHasError(errors))) {
String exceptionMessage = StringCustomUtils.constraintHasError(errors);
returnDto.setErrorCode(MainConstants.ERROR_CODE);
returnDto.setMessage(exceptionMessage);
}else {
returnDto.setData(onlineReceiptRegisterService.save(dto,files));
returnDto.setMessage(String.format(SUCCESS,returnDto.getData().getTransactionReference()));
}
}catch (Exception e){
returnDto.setErrorCode("0x01");
returnDto.setMessage(e.getMessage());
}
return ResponseEntity.ok(returnDto);
}
</code>
<code>@PostMapping("/online_receipt_register")
public ResponseEntity<GenericReturnDto<?>> save(
@RequestPart("dto") OnlineReceiptRegisterDto dto,
@RequestPart("files") MultipartFile[] files,
Errors errors) throws TransactionException{
LOG.info("ONLINE_RECEIPT_REGISTER - POST-CREATE {}", dto);
GenericReturnDto<OnlineReceiptRegisterDto> returnDto = new GenericReturnDto<>();
try {
if(!StringCustomUtils.isNULLOrEmptyString(StringCustomUtils.constraintHasError(errors))) {
String exceptionMessage = StringCustomUtils.constraintHasError(errors);
returnDto.setErrorCode(MainConstants.ERROR_CODE);
returnDto.setMessage(exceptionMessage);
}else {
returnDto.setData(onlineReceiptRegisterService.save(dto,files));
returnDto.setMessage(String.format(SUCCESS,returnDto.getData().getTransactionReference()));
}
}catch (Exception e){
returnDto.setErrorCode("0x01");
returnDto.setMessage(e.getMessage());
}
return ResponseEntity.ok(returnDto);
}
</code>
@PostMapping("/online_receipt_register")
public ResponseEntity<GenericReturnDto<?>> save(
@RequestPart("dto") OnlineReceiptRegisterDto dto,
@RequestPart("files") MultipartFile[] files,
Errors errors) throws TransactionException{
LOG.info("ONLINE_RECEIPT_REGISTER - POST-CREATE {}", dto);
GenericReturnDto<OnlineReceiptRegisterDto> returnDto = new GenericReturnDto<>();
try {
if(!StringCustomUtils.isNULLOrEmptyString(StringCustomUtils.constraintHasError(errors))) {
String exceptionMessage = StringCustomUtils.constraintHasError(errors);
returnDto.setErrorCode(MainConstants.ERROR_CODE);
returnDto.setMessage(exceptionMessage);
}else {
returnDto.setData(onlineReceiptRegisterService.save(dto,files));
returnDto.setMessage(String.format(SUCCESS,returnDto.getData().getTransactionReference()));
}
}catch (Exception e){
returnDto.setErrorCode("0x01");
returnDto.setMessage(e.getMessage());
}
return ResponseEntity.ok(returnDto);
}