---
name: UploadedFile
lang: go
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  type UploadedFile struct {
      Filename    string    `json:"filename"`
      StoredName  string    `json:"stored_name"`
      Size        int64     `json:"size"`
      ContentType string    `json:"content_type"`
      Path        string    `json:"path"`
      CreatedAt   time.Time `json:"created_at"`
  }
description: "Metadata de un archivo subido y almacenado. Combina nombre original, nombre unico en disco, tamano, MIME type, ruta y timestamp de creacion."
tags: [upload, file, storage, http, infra]
uses_types: []
file_path: "functions/infra/uploaded_file.go"
---

## Ejemplo

```go
file := UploadedFile{
    Filename:    "vacaciones.png",
    StoredName:  "a1b2c3d4-e5f6-7890-abcd-ef1234567890.png",
    Size:        102400,
    ContentType: "image/png",
    Path:        "/var/uploads/a1b2c3d4-e5f6-7890-abcd-ef1234567890.png",
    CreatedAt:   time.Now(),
}
```

## Notas

Tipo producto — todos los campos siempre presentes. `Filename` se preserva por trazabilidad pero NO se usa como nombre real en disco (riesgo path traversal). `StoredName` es generado con UUID por `file_unique_name`. `Path` es la ruta completa en disco para storage local, o la key del objeto para S3.
