A. srv / archivo.php

1<?php
2
3require_once __DIR__ . "/../lib/php/NOT_FOUND.php";
4require_once __DIR__ . "/../lib/php/ejecutaServicio.php";
5require_once __DIR__ . "/../lib/php/recuperaIdEntero.php";
6require_once __DIR__ . "/../lib/php/ProblemDetails.php";
7require_once __DIR__ . "/../lib/php/selectFirst.php";
8require_once __DIR__ . "/Bd.php";
9require_once __DIR__ . "/TABLA_ARCHIVO.php";
10
11ejecutaServicio(function () {
12
13 // Evita que la imagen se cargue en el caché del navegador.
14 header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
15 header("Cache-Control: post-check=0, pre-check=0", false);
16 header("Pragma: no-cache");
17
18 $archId = recuperaIdEntero("id");
19
20 $archivo =
21 selectFirst(pdo: Bd::pdo(), from: ARCHIVO, where: [ARCH_ID => $archId]);
22
23 if ($archivo === false) {
24 $idHtml = htmlentities($archId);
25 throw new ProblemDetails(
26 status: NOT_FOUND,
27 title: "Archivo no encontrado.",
28 type: "/error/archivonoencontrado.html",
29 detail: "No se encontró ningún archivo con el id $idHtml.",
30 );
31 }
32
33 $bytes = $archivo[ARCH_BYTES];
34 $contentType = (new finfo(FILEINFO_MIME_TYPE))->buffer($bytes);
35 header("Content-Type: $contentType");
36 echo $bytes;
37});
38
skip_previous skip_next