Se agrega el servicio para visualizar el archivo pdf de la tabla convoca

parent 1eb529ff
package ec.edu.espe.movilidad.MovilidadWS.controller; package ec.edu.espe.movilidad.MovilidadWS.controller;
import ec.edu.espe.movilidad.MovilidadWS.model.ModelUzyTavConsolca;
import ec.edu.espe.movilidad.MovilidadWS.model.ModelUzyTavConvoca; import ec.edu.espe.movilidad.MovilidadWS.model.ModelUzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.service.UzyTavConvoca.IServiceUzyTavConvoca; import ec.edu.espe.movilidad.MovilidadWS.service.UzyTavConvoca.IServiceUzyTavConvoca;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
import java.util.Optional;
import static ec.edu.espe.movilidad.MovilidadWS.Constant.GlobalConstants.V1_API_VERSION; import static ec.edu.espe.movilidad.MovilidadWS.Constant.GlobalConstants.V1_API_VERSION;
...@@ -41,14 +44,42 @@ public class UzyTavConvocaController { ...@@ -41,14 +44,42 @@ public class UzyTavConvocaController {
@PostMapping("/guardarPDF") @PostMapping("/guardarPDF")
public String guardarPDF(@RequestParam("file") MultipartFile file, @RequestParam("uzytavconvoca_id") Long uzytavconvoca_id) { public String guardarPDF(@RequestParam("file") MultipartFile file, @RequestParam("uzytavconvoca_id") Long uzytavconvoca_id) {
try { try {
String result = serviceUzyTavConvoca.guardarPDF(file, uzytavconvoca_id); String pdfGuardado = serviceUzyTavConvoca.guardarPDF(file, uzytavconvoca_id);
return result; return pdfGuardado;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return "Error al guardar el archivo PDF"; return "Error al guardar el archivo PDF";
} }
} }
@GetMapping("/verPDF/{uzytavconvoca_id}")
public ResponseEntity<ByteArrayResource> verPDF(@PathVariable Long uzytavconvoca_id) {
// Obtengo el documento mediante el id de convoca
Optional<ModelUzyTavConvoca> documentOptional = Optional.ofNullable(serviceUzyTavConvoca.ListarPorID(uzytavconvoca_id));
if (documentOptional.isPresent()) {
ModelUzyTavConvoca document = documentOptional.get();
byte[] datosPDF = document.getUzytavconvoca_digital();
String nombrePDF= document.getUzytavconvoca_digital_nombre(); //obtengo el nombre del pdf de la bdd
// Creo un recurso de tipo ByteArrayResource a partir de los datos del PDF
ByteArrayResource resource = new ByteArrayResource(datosPDF);
// Devuelvo la respuesta con el recurso y los encabezados para la visualización del PDF
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename="+nombrePDF) //inline para visualizar en el navegador y filename el nombre q deve de mostrar el archivo
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + nombrePDF) //attachment para que me permita descargar el archivo
.contentType(MediaType.APPLICATION_PDF)
.body(resource);
} else {
return ResponseEntity.notFound().build();
}
}
......
...@@ -57,7 +57,7 @@ public class ServiceUzyTavConvoca implements IServiceUzyTavConvoca{ ...@@ -57,7 +57,7 @@ public class ServiceUzyTavConvoca implements IServiceUzyTavConvoca{
String pdfNombre = file.getOriginalFilename(); String pdfNombre = file.getOriginalFilename();
// Generar la URL del archivo // Generar la URL del archivo
//String urlArchivo = "D:\\Usuario\\Nueva carpeta (2)\\TESIS\\BACK END\\V2\\prototipoWs-master\\uploads" + uzytavconvoca_id; String urlArchivo = "localhost/" + uzytavconvoca_id;
// Verifico si el documento ya existe en la base de datos // Verifico si el documento ya existe en la base de datos
Optional<ModelUzyTavConvoca> existingDocument = daoUzyTavConvoca.findById(uzytavconvoca_id); Optional<ModelUzyTavConvoca> existingDocument = daoUzyTavConvoca.findById(uzytavconvoca_id);
...@@ -67,15 +67,15 @@ public class ServiceUzyTavConvoca implements IServiceUzyTavConvoca{ ...@@ -67,15 +67,15 @@ public class ServiceUzyTavConvoca implements IServiceUzyTavConvoca{
// Si el documento existe, actualizo el registro con los nuevos datos // Si el documento existe, actualizo el registro con los nuevos datos
document = existingDocument.get(); document = existingDocument.get();
document.setUzytavconvoca_digital(pdfBytes); document.setUzytavconvoca_digital(pdfBytes);
document.setUzytavconvoca_nombre(pdfNombre); document.setUzytavconvoca_digital_nombre(pdfNombre);
//document.setUzytavconvoca_url(urlArchivo); document.setUzytavconvoca_digital_url(urlArchivo);
} else { } else {
// Si el documento no existe, se creo una nueva instancia // Si el documento no existe, se creo una nueva instancia
document = new ModelUzyTavConvoca(); document = new ModelUzyTavConvoca();
document.setUzytavconvoca_id(uzytavconvoca_id); document.setUzytavconvoca_id(uzytavconvoca_id);
document.setUzytavconvoca_digital(pdfBytes); document.setUzytavconvoca_digital(pdfBytes);
document.setUzytavconvoca_nombre(pdfNombre); document.setUzytavconvoca_digital_nombre(pdfNombre);
//document.setUzytavconvoca_url(urlArchivo); document.setUzytavconvoca_digital_url(urlArchivo);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment