Pregunta

Soy nuevo en node js y estoy creando una aplicación simple donde el usuario creará una cuenta con detalles y he usado mongodb en el backend para almacenar los detalles del usuario, su nombre, correo electrónico, etc.

Después de crear una cuenta, la estoy redirigiendo a la página de inicio de sesión donde el usuario debe iniciar sesión y, cuando el inicio de sesión sea exitoso, el usuario será redirigido al perfil donde ahora estoy mostrando su nombre usando sesiones.

Ahora lo que quiero es cargar la imagen de un usuario al crear la cuenta y me pregunto cómo voy a vincularla al formulario de creación de mi cuenta como se muestra en la captura de pantalla mientras la guardo en mongodb.

Quiero mostrar la imagen de ese usuario como foto de perfil cuando el usuario inicie sesión y sea redirigido a su página de perfil.

Encontré muchos enlaces sobre cómo guardar imágenes en mongodb, pero no pude obtener ninguna ayuda y también adjunto la captura de pantalla de la página de perfil.

¿Cómo puedo implementar esto?enter image description here

página de perfil

enter image description here

¿Fue útil?

Solución

Si realmente desea guardar la imagen de perfil en MongoDB.Te sugiero que pases ¿Cuándo debo usar GridFS?

Y luego decide cuál es el tamaño máximo de la imagen de perfil que permitirás que el usuario cargue.

MongoDB BSON Los documentos tienen un límite de 16 MB.Entonces, si el total del documento del usuario no excede los 16 MB, puede almacenarlos directamente en su documento usando el BinData tipo de datos.

Imágenes/Vídeos/PDF/Ppt/hojas de cálculo, etc. No importa, se pueden almacenar de la misma manera.Depende de su aplicación devolver un tipo de contenido apropiado en el encabezado para que se muestre correctamente en su aplicación web.

Feliz codificación...:)


Actualizar:Para hacer eso, necesita codificar en base64 los datos de la imagen de la siguiente manera:

var base64Image = new Buffer(uploadedFilesData, 'binary').toString('base64');

Luego guárdelo usando Mongo BinData tipo, luego lo guardará como una matriz de bits BSON, en realidad no almacenará el base64 cadena, por lo que el tamaño no crecerá más que su imagen binaria original.Y cuando lees desde MongoDB y quieres que sirva como imagen, puedes hacer lo siguiente:

app.get('/getimage', function(req, res) {
  db.collection.find({'imgId':req.params.id}, function(err,data) {
      var base64Image = var img = new Buffer(data.imgDataField, 'base64');
      res.writeHead(200, {
        'Content-Type': 'image/jpeg',
        'Content-Length': base64Image.buffer.length
      });
      res.end(base64Image.buffer);
  }
}

Lado del cliente que debes mostrar base64Image datos algo como:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB50RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNS4xqx9I6wAAAVBJREFUOI2tlLFKA0EQhr+9i2J1kBDFYG91gYRA0ngpJELQ2KSwlFjYKIidlZVvIFgEXyBYaBH0ESysLATBPiRYWFgEye7eWkSimL1wyg1MM//Mx87O7ghjjCEhc5ICJQ5LRQm9/oDLqzsenl4QgAHK/ir7O5us5JatNcJ2Z73+gKOzCz6kQjguQoAxYELNwlyK89NDK9DaZrvTZTiS4LggBAYBQoDjMhxJ2p1u/DbvH59xU/MYrac0Y8Z6bJgJDaEF9FOPDdNKMev1hVrFh2XTHq9v75GwpYxnjVsH0GrW0UqhtZ52pWg16/FhjVpANu2Ngb88m/Zo1IL4MICg5FthQcmPKomGVSsFpJQopSYupaRaKUTCIr9TuZhnq76O47iTWBhqysX832EA1ze3COf78LnFDBzvRebP3BrbG2tfUx23eXKwOyvd/tH/a4nus083fKdxIODDXwAAAABJRU5ErkJggg==" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top