Hacer que los archivos/imágenes estén disponibles para ser accedidos, cuando navegamos a
localhost:8000/properties/files/[image name]
localhost:8000/properties/files/1635843023660-profile.jpg
Estructura de archivos
node_modules src/ uploads/ 1635843023660-profile.jpg 1635843023668-home.jpg ... .env package.jsoníndice.js
import Fastify from "fastify"; import FastifyStatic from "fastify-static"; import path from "path"; import { propertiesRoutes } from "./routes/properties.js"; ... export const fastify = await Fastify({ logger: process.env.LOGGER || true }); const __dirname = path.resolve(path.dirname("")); fastify.register(FastifyStatic, { root: path.join(__dirname, "uploads"), }); fastify.register(propertiesRoutes, { prefix: "/properties" }); ...rutas/propiedades.js
export const propertiesRoutes = function (fastify, opts, done) { ... fastify.get("/images/:name", (req, res) => { res.sendFile(process.cwd() + "/uploads/" + req.params.name); }); done(); };a partir de ahora estoy recibiendo
{"mensaje":"Ruta GET:/properties/images/1635843023660-profile.jpg no encontrado","error":"No encontrado","statusCode":404}
Cuando no especifique un prefix en su configuración de FastifyStatic , se utilizará el valor predeterminado / . Entonces, para acceder a sus archivos estáticos, debe cambiar la ruta de su solicitud de /properties/images/<your-img.jpg> a /images/<your-img.jpg> .
Alternativamente, podría usar un prefijo personalizado como public como lo hicieron en la documentación :
fastify.register(require('fastify-static'), { root: path.join(__dirname, 'uploads'), prefix: '/public/', }) y luego solicítelo con /public/images/<your-img.jpg> .