¿De cuántas maneras podemos almacenar imágenes de nuestra aplicación web?

Gracias por A2A.

Hay varias maneras de guardar la imagen porque básicamente cada imagen es un byte de datos. Discutiré aquellas prácticas que son comunes en las industrias de TI:

  • Servicios en la nube de terceros: hoy en día es lo más confiable para almacenar imágenes en servicios en la nube de terceros, son servidores muy rápidos optimizados para tipos de medios y, lo que es más importante, también proporcionan otros métodos de manipulación de imágenes (la mayoría de forma gratuita) como el recorte , generar miniaturas, escala de grises, etc. Algunos de los mejores son Cloudinary, Amazon Simple Storage Service (S3) – Cloud Storage – AWS, elija de acuerdo con los requisitos y el presupuesto de su aplicación web. Este método es más fácil de implementar, la documentación le ayudará con seguridad . He usado ambos y cloudinary es mejor si soy un novato en node.js
  • Manejo de archivos: también puede guardar la imagen en su propio servidor donde está alojada la aplicación de nodo. Es bueno cuando hay menos cantidad de imágenes para la aplicación (alrededor de un máximo de 40k de imágenes de 2mb, dependiendo de la configuración del servidor), para este propósito debe usar la solicitud multiparte en las API de nodo, ya que enviará datos de archivo y json en la mayoría de los casos: multiparte, esto lo ayudará en la aplicación de nodo y si comparte solo un archivo sin datos, no habrá necesidad de multiparte.
  • Almacenamiento de base de datos: es la forma más convencional de almacenamiento de imágenes, estoy explicando aquí con el servidor SQL, también puede usarlo para mongodb: en primer lugar, debe hacer un formulario HTML con un elemento de entrada de archivo. Aquí hay un ejemplo simple:

entonces deberías cargar el middleware express.bodyParser() :

app.use (express.bodyParser ({uploadDir: ‘/ ruta / a / temporary / directory / to / store / uploaded / files’}));

y defina una ruta para manejar la publicación del formulario:

var ruta = require (‘ruta’),
fs = require (‘fs’);
// …
app.post (‘/ upload’, función (req, res) {
var tempPath = req.files.file.path,
targetPath = path.resolve (‘./ uploads / image.png’);
if (path.extname (req.files.file.name) .toLowerCase () === ‘.png’) {
fs.rename (tempPath, targetPath, function (err) {
si (err) lanza err;
console.log (“¡Carga completada!”);
});
} más {
fs.unlink (tempPath, function () {
si (err) lanza err;
console.error (“¡Solo se permiten archivos .png!”);
});
}
// …
});

para mostrar el archivo cargado, supongo que ya tiene una página HTML con una etiqueta de imagen:

Ahora puede usar res.sendFile para servir la imagen cargada:

app.get (‘/ image.png’, function (req, res) {
res.sendfile (path.resolve (‘./ uploads / image.png’));
});

Estos 3 son el enfoque más común para cargar imágenes

Espero que esto ayude

Feliz codificación 🙂

Buena pregunta y respuestas agradables! El almacenamiento de imágenes para aplicaciones web es una cuestión reflexiva. Si sus imágenes web tardan demasiado en cargarse, sus visitantes pueden hacer clic en sus competidores. Las imágenes son como otros archivos y puede almacenarlas a medida que almacena otros archivos.

Cuando se trata de almacenar imágenes de sus aplicaciones web, tiene múltiples opciones. Puede almacenarlos en la base de datos, sistema de archivos o servicio en la nube de terceros.

Prefiero el sistema de archivos porque es una solución flexible y fácil de controlar. A continuación, también puede almacenar imágenes con el servidor SQL o Mongodb. Pero hay algunos problemas con el almacenamiento de imágenes de la base de datos. El tamaño del archivo aumenta y los conjuntos de resultados que contienen muchos archivos grandes consumen más memoria. Y, si está utilizando un motor de almacenamiento que usa bloqueos de tabla para las escrituras, la tabla de archivos de imagen puede bloquearse dependiendo del tamaño de los archivos de imagen que se agreguen / modifiquen.

El método de almacenamiento de imágenes más popular y altamente seguro es utilizar un servicio de almacenamiento en la nube de terceros, como Cloudinary. Se puede acceder rápidamente a las imágenes almacenadas en la nube desde cualquier rincón del mundo y puede usar marcos y lenguajes de codificación como JQuery para cargar archivos. El almacenamiento en la nube le brinda soluciones de respaldo en caso de pérdida de datos. Si los archivos se dañan o se pierden de otros lugares, siempre puede acceder a recuperarlos del almacenamiento en la nube. Además de eso, el almacenamiento en la nube reduce los costos operativos de las empresas. De lo contrario, estas compañías pueden necesitar discos duros externos y soluciones de alojamiento internas para almacenar las imágenes de sus aplicaciones web.

Siempre es mejor almacenar imágenes en el sistema de archivos en lugar de en DB. Estas son algunas de las razones:

  • Leer / escribir en la base de datos es más lento que el del sistema de archivos.
  • Las copias de seguridad de su base de datos pueden aumentar de tamaño ya que las imágenes son grandes.
  • El almacenamiento de imágenes en DB agrega una capa adicional de DB y, por lo tanto, aumenta el procesamiento necesario.
  • MongoDB tiene un límite de 16 MB por documento, puede usar GridFS para omitir ese límite, pero como se menciona en los documentos de GridFS, la información de más de 16 MB se almacena en fragmentos, lo que agrega un procesamiento adicional en el lado de su aplicación.
  • Si necesita mostrar la imagen, por ejemplo, en la aplicación web, debe conocer su tipo y almacenar el tipo de imagen junto con la imagen, ya que debe generar el tipo de encabezado correcto al emitir la imagen, esto agrega otra verificación.

Uno puede almacenar imágenes de la siguiente manera:

  1. Almacenamiento en la nube de terceros: Si almacena imágenes en un lugar diferente, habrá mucho menos espacio consumido en el servidor web. Además, la obtención de imágenes puede ser más rápida según el servicio en la nube que elija. Por ejemplo: AWS, Miscrosoft Azure, Google Cloud Storage
  2. almacenar imágenes en la carpeta raíz del servidor web.

En todos los casos, almacene el nombre de la imagen en la base de datos y busque las imágenes en consecuencia. No se recomienda guardar imágenes en la base de datos, ya que utiliza mucho espacio y su recuperación es lenta.