Volver a la wiki

GET /api/chat-images/:name — CF Pages Function para servir imágenes del chat desde R2

GET /api/chat-images/:name — CF Pages Function para servir imágenes del chat desde R2

Cloudflare Pages Function en functions/api/chat-images/[name].ts. Streama objetos del bucket R2 TASK_ATTACHMENTS (prefijo chat/) como respuestas HTTP, permitiendo que los links [abrir imagen:URL] del chat sean accesibles directamente en el navegador.


Contrato HTTP

GET /api/chat-images/:name

donde :name es el filename devuelto por POST /api/chat/upload-image (p. ej. a3b2c1d0-uuid.png).

Respuestas

StatusSituaciónBody
200 OKImagen encontradaStream del objeto R2
400 Bad RequestNombre vacío o no válido{ error: 'Invalid name' }
404 Not FoundObjeto no existe en R2{ error: 'Not found', r2_key }

Headers de respuesta exitosa

Content-Type:        image/png  (o el MIME original almacenado en R2)
Content-Length:      <bytes>
Content-Disposition: inline; filename="<nombre-encoded>"
Cache-Control:       private, max-age=3600

Validación del parámetro name

Regex estricta: ^[A-Za-z0-9._-]+$


Entorno (Env)

interface Env {
  TASK_ATTACHMENTS: R2Bucket;
}

El objeto se recupera con env.TASK_ATTACHMENTS.get('chat/<name>'). El Content-Type se lee de object.httpMetadata?.contentType (almacenado al subir); fallback application/octet-stream.


Autenticación

Protegido por CF Access a nivel de ruta global del workspace. Solo staff autenticado puede acceder a las imágenes — no hay URLs públicas sin sesión.


Relación con upload-image

EndpointRutaFunción
POST /api/chat/upload-imagefunctions/api/chat/upload-image.tsPersiste imagen en R2, devuelve URL
GET /api/chat-images/:namefunctions/api/chat-images/[name].tsSirve imagen desde R2

El flujo completo: upload → marcador en mensaje → renderBody detecta marcador → link → este endpoint.


Véase también

Subir