uploadFrontDPI function
Implementation
Future<DPIProcessResponse> uploadFrontDPI(
{required File file, required String code}) async {
var request = http.MultipartRequest(
'POST',
Uri.parse('${Enviroment.url}dpi/api/validateFrontDPIAWS'),
);
final fileBytes = await file.readAsBytes();
// Detectar el tipo MIME del archivo (esto depende de la extensión)
String mimeType = 'application/octet-stream'; // Tipo genérico por defecto
if (file.path.endsWith('.jpg') || file.path.endsWith('.jpeg')) {
mimeType = 'image/jpeg';
} else if (file.path.endsWith('.png')) {
mimeType = 'image/png';
} else if (file.path.endsWith('.pdf')) {
mimeType = 'application/pdf';
}
// Añadir el archivo a la solicitud con el tipo MIME adecuado
request.files.add(
http.MultipartFile(
'file',
Stream.value(
fileBytes), // Usamos Stream.value para enviar los bytes correctamente
fileBytes.length,
filename: basename(file.path),
contentType: MediaType.parse(mimeType), // Especificamos el tipo MIME
),
);
// Añadir otros campos a la solicitud
request.fields['codigo'] = code;
try {
final streamedResponse = await request.send();
final response = await http.Response.fromStream(streamedResponse);
final Map<String, dynamic> responseData = jsonDecode(response.body);
print("Response: ${responseData}");
return DPIProcessResponse.fromJson(responseData);
} catch (e) {
DPIProcessResponse initProcessResponse = DPIProcessResponse(
error: true, message: "Error interno en el sistema.", details: []);
return initProcessResponse;
}
}