Domanda

Sono nuovo in node js e sto creando una semplice app in cui l'utente creerà un account con i dettagli e ho utilizzato mongodb nel backend per memorizzare i dettagli dell'utente, il suo nome, la sua email, ecc.

Dopo aver creato un account, lo reindirizzo alla pagina di accesso in cui l'utente deve accedere e, una volta effettuato l'accesso, l'utente verrà reindirizzato al profilo dove in questo momento sto mostrando il suo nome utilizzando le sessioni.

Ora quello che voglio è caricare l'immagine di un utente durante la creazione dell'account e mi chiedo come collegarla al modulo di creazione del mio account come mostrato nello screenshot mentre lo salvo su mongodb.

Voglio mostrare l'immagine dell'utente come immagine del profilo quando l'utente accederà e verrà reindirizzato alla pagina del suo profilo.

Ho trovato molti collegamenti sul salvataggio dell'immagine su mongodb ma non sono riuscito a ottenere alcun aiuto e allego anche lo screenshot della pagina del profilo.

Come posso implementarlo?enter image description here

pagina profilo

enter image description here

È stato utile?

Soluzione

Se vuoi davvero salvare l'immagine del profilo in MongoDB.Ti consiglio di passare Quando dovrei usare GridFS?

E poi decidi qual è la dimensione massima dell'immagine del profilo che consentirai all'utente di caricare

MongoDBBSON i documenti hanno un limite di 16 MB.Pertanto, se il totale dell'intero documento dell'utente non supera i 16 MB, puoi memorizzarli direttamente nel documento utilizzando il BinData tipo di dati.

Immagini/Video/PDF/Ppt/fogli di calcolo ecc.: non importa, possono essere archiviati allo stesso modo.Spetta alla tua applicazione restituire un tipo di contenuto appropriato nell'intestazione per visualizzarlo correttamente nella tua app Web.

Buona programmazione..:)


Aggiornamento:Per fare ciò è necessario codificare base64 i dati dell'immagine come segue:

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

Quindi conservalo usando Mongo BinData type, lo salverà come array di bit BSON, non memorizzerà effettivamente il file base64 string, quindi la dimensione non aumenterà rispetto all'immagine binaria originale.E quando leggi da MongoDB e vuoi servire come immagine, puoi fare come segue:

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);
  }
}

Lato client che dovresti mostrare base64Image dati qualcosa del tipo:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB50RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNS4xqx9I6wAAAVBJREFUOI2tlLFKA0EQhr+9i2J1kBDFYG91gYRA0ngpJELQ2KSwlFjYKIidlZVvIFgEXyBYaBH0ESysLATBPiRYWFgEye7eWkSimL1wyg1MM//Mx87O7ghjjCEhc5ICJQ5LRQm9/oDLqzsenl4QgAHK/ir7O5us5JatNcJ2Z73+gKOzCz6kQjguQoAxYELNwlyK89NDK9DaZrvTZTiS4LggBAYBQoDjMhxJ2p1u/DbvH59xU/MYrac0Y8Z6bJgJDaEF9FOPDdNKMev1hVrFh2XTHq9v75GwpYxnjVsH0GrW0UqhtZ52pWg16/FhjVpANu2Ngb88m/Zo1IL4MICg5FthQcmPKomGVSsFpJQopSYupaRaKUTCIr9TuZhnq76O47iTWBhqysX832EA1ze3COf78LnFDBzvRebP3BrbG2tfUx23eXKwOyvd/tH/a4nus083fKdxIODDXwAAAABJRU5ErkJggg==" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top