Introducción
Sube y gestiona archivos en el almacenamiento en la nube con optimización automática.
Más información sobre la interfaz de usuario del módulo https://doc.oneentry.cloud/docs/attributes/types/#File
🎯 ¿Qué hace este módulo?
El módulo FileUploading te permite subir, recuperar y eliminar archivos en el almacenamiento en la nube de OneEntry: imágenes, PDFs, videos, documentos, cualquier tipo de archivo, con optimización automática de imágenes y entrega a través de CDN.
Piénsalo como tu gestor de almacenamiento en la nube: subes archivos una vez, y OneEntry los almacena, optimiza las imágenes automáticamente y las entrega rápidamente a través de CDN.
🚀 Inicio Rápido
Inicializa el módulo desde defineOneEntry:
const { FileUploading } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Sube un archivo y lee el enlace de descarga devuelto:
// upload() returns an ARRAY of uploaded files (IUploadingReturn[]).
const uploaded = await FileUploading.upload(file, {
entity: "product",
id: 123,
type: "image",
compress: true,
});
const { filename, downloadLink, size } = uploaded[0];
console.log(downloadLink); // use in <img>, <a>, <video>
Luego, elimínalo por nombre de archivo (la entidad/id resuelve la carpeta de almacenamiento):
await FileUploading.delete(filename, { entity: "product", id: 123 });
✨ Conceptos Clave
¿Qué es la Carga de Archivos?
La carga de archivos es almacenar archivos en el almacenamiento en la nube y obtener un enlace CDN permanente de vuelta:
- Subir - enviar un
FileoBloba la nube de OneEntry - Almacenamiento - los archivos se almacenan, organizados por
entity→id→filename - CDN - entrega rápida desde servidores cercanos a los usuarios
- Optimización - las imágenes pueden ser auto-comprimidas y redimensionadas
- URL - el
downloadLinkde la respuesta es el enlace permanente
Tipos de archivos soportados
Se acepta cualquier tipo de archivo. Solo las imágenes son auto-optimizadas; todo lo demás se almacena tal cual.
| Categoría | Tipos de Archivos | Auto-Optimización |
|---|---|---|
| Imágenes | JPG, PNG, GIF, WebP, SVG | Sí (redimensionar, comprimir) |
| Documentos | PDF, DOC, DOCX, XLS, XLSX | No (almacenados tal cual) |
| Videos | MP4, MOV, AVI, WebM | No (almacenados tal cual) |
| Archivos | ZIP, RAR, TAR, GZ | No (almacenados tal cual) |
| Otros | Cualquier tipo de archivo | No (almacenados tal cual) |
📋 Lo Que Necesitas Saber
Parámetros de Carga
upload(file, fileQuery?) toma el archivo más un objeto de consulta opcional:
await FileUploading.upload(file, {
entity: 'product', // Storage folder name (optional, any string)
id: 123, // Entity ID (optional)
type: 'image', // Folder/type hint (optional, any string)
width: 1920, // Max width for images (optional)
height: 1080, // Max height for images (optional)
compress: true, // Compress images (optional)
});
file— elFileoBloba subir (desde una entrada o arrastrar-soltar)entity— nombre de carpeta libre en el almacenamiento (por ejemplo,product,page,user,editor— ejemplos, no un enum fijo)id— ID de la entidad para asociar el archivotype— cadena de sugerencia de carpeta/tipo librewidth/height— dimensiones máximas para imágenes (se preserva la relación de aspecto)compress— habilitar la compresión de imágenes
Respuesta de Carga
upload() resuelve a un array de IUploadingReturn. Cada elemento tiene:
{
filename: "uploads/abc123-photo.jpg", // Filename with relative path
downloadLink: "https://cdn.../photo.jpg", // CDN URL
size: 204800, // File size in bytes
contentType: "image/png", // MIME type
}
downloadLink— usa esta URL en etiquetas<img>,<a>,<video>filename— guárdalo para eliminar el archivo más tardesize— tamaño del archivo en bytes
Optimización de Imágenes
Para imágenes puedes pasar width, height y compress. La relación de aspecto siempre se preserva: la imagen se redimensiona para ajustarse dentro de los límites dados, nunca se estira.
Eliminación de Archivos
Pasa el nombre de archivo primero; la entidad/id/tipo viven en el objeto de consulta opcional que resuelve la carpeta de almacenamiento:
await FileUploading.delete('abc123-photo.jpg', {
entity: 'product',
id: productId,
});
Recuperación de un Archivo
getFile(id, type, entity, filename, template?) devuelve un objeto Response en crudo (no JSON parseado) — llama a .blob(), .arrayBuffer(), etc. según sea necesario.
Construyendo un Archivo desde una URL
createFileFromUrl(url, filename, mimeType?) obtiene un recurso remoto y devuelve un File del navegador, útil para volver a subir una imagen remota existente.
📊 Tabla de Referencia Rápida - Métodos
| Método | Qué Hace | Cuándo Usarlo |
|---|---|---|
| upload() | Subir archivo al almacenamiento en la nube | El usuario sube una imagen, documento |
| getFile() | Obtener el archivo (raw Response) | Descargar un archivo almacenado |
| delete() | Eliminar archivo del almacenamiento | Eliminar archivos antiguos |
| createFileFromUrl() | Construir un File desde una URL remota | Importar una imagen remota antes de subir |
Todos los métodos son públicos: no se requiere autorización del usuario.
❓ Preguntas Comunes (FAQ)
¿Qué tipos de archivos puedo subir?
Cualquier tipo de archivo. Solo las imágenes son auto-optimizadas (redimensionar/comprimir); otros archivos se almacenan tal cual.
¿Cuál es el tamaño máximo de archivo?
Depende de los límites de tu plan de OneEntry. Optimiza las imágenes antes de subir para mantener los tamaños bajos.
¿Los archivos se almacenan permanentemente?
Sí: los archivos permanecen hasta que los elimines con FileUploading.delete(). Los archivos permanecen en el almacenamiento incluso si la entidad relacionada es eliminada, así que límpialos explícitamente.
¿Puedo obtener una lista de todos los archivos subidos para una entidad?
No directamente a través de este SDK. Haz un seguimiento de los valores de filename que recibes de upload() (por ejemplo, guárdalos en tu base de datos) para gestionar los archivos más tarde.
¿Puedo redimensionar imágenes a dimensiones exactas?
No: la relación de aspecto siempre se preserva. width/height definen un cuadro delimitador en el que la imagen se ajusta, evitando distorsiones.
🎓 Mejores Prácticas
- Valida el tipo y tamaño del archivo antes de llamar a
upload(). - Pasa
entity/idpara que los archivos se organicen por entidad en el almacenamiento. - Habilita
compresspara imágenes web. - Guarda el
filenamedevuelto para que puedasdelete()el archivo más tarde. - Limpia explícitamente los archivos no utilizados: sobreviven a la eliminación de la entidad.
- Maneja los errores de carga con try/catch y verifica la forma de retorno de
IError.
🔗 Documentación Relacionada
- Módulo de Productos - Sube imágenes de productos
- Módulo de FormsData - Los campos de archivo se suben a través de este módulo al enviar
- Módulo de Usuarios - Sube fotos de perfil de usuario
- Módulo de Páginas - Sube archivos de contenido de página