Загрузить изображение пользователя в его аккаунт. Создание с помощью express js?[закрыто]

StackOverflow https://stackoverflow.com//questions/23039861

Вопрос

Я новичок в node js и создаю простое приложение, в котором пользователь создаст учетную запись с подробностями, и я использовал mongodb на серверной стороне для хранения данных пользователя, его имени, электронной почты и т. д.

После создания учетной записи я перенаправляю ее на страницу входа, где пользователь должен войти в систему, и при успешном входе в систему пользователь будет перенаправлен в профиль, где прямо сейчас я показываю его имя, используя сеансы.

Теперь я хочу загрузить изображение пользователя при создании учетной записи, и мне интересно, как я могу связать его с формой создания моей учетной записи, как показано на снимке экрана, сохраняя его в mongodb.

Я хочу показать изображение этого пользователя в качестве изображения профиля, когда пользователь войдет в систему и будет перенаправлен на страницу своего профиля.

Я нашел много ссылок на сохранение изображения в mongodb, но не смог получить никакой помощи, а также прилагаю скриншот страницы профиля.

Как я могу это реализовать?enter image description here

страница профиля

enter image description here

Это было полезно?

Решение

Если вы действительно хотите сохранить изображение профиля в MongoDB.Я предлагаю вам пройти Когда мне следует использовать GridFS?

А затем решите, какой максимальный размер изображения профиля вы разрешите пользователю загружать.

MongoDB BSON документы ограничены 16 МБ.Таким образом, если общий размер всего вашего документа пользователя не превышает 16 МБ, вы можете сохранить их непосредственно в своем документе, используя БинДата тип данных.

Изображения/Видео/PDF/Ppt/таблицы и т. д. – это не имеет значения, их можно хранить одинаково.Ваше приложение должно возвращать соответствующий тип контента в заголовке для правильного отображения в вашем веб-приложении.

Приятного кодирования..:)


Обновлять:Для этого вам необходимо закодировать данные изображения в base64 следующим образом:

вар base64Image = новый Buffer(uploadedFilesData, 'двоичный').toString('base64');

Затем сохраните его с помощью Mongo BinData типа, он затем сохранит его как битовый массив BSON, а не сохранит base64 строка, поэтому размер не будет превышать исходное двоичное изображение.И когда вы читаете из MongoDB и хотите использовать изображение, вы можете сделать следующее:

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

Клиентская часть, которую вы должны показать base64Image данные что-то вроде:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB50RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNS4xqx9I6wAAAVBJREFUOI2tlLFKA0EQhr+9i2J1kBDFYG91gYRA0ngpJELQ2KSwlFjYKIidlZVvIFgEXyBYaBH0ESysLATBPiRYWFgEye7eWkSimL1wyg1MM//Mx87O7ghjjCEhc5ICJQ5LRQm9/oDLqzsenl4QgAHK/ir7O5us5JatNcJ2Z73+gKOzCz6kQjguQoAxYELNwlyK89NDK9DaZrvTZTiS4LggBAYBQoDjMhxJ2p1u/DbvH59xU/MYrac0Y8Z6bJgJDaEF9FOPDdNKMev1hVrFh2XTHq9v75GwpYxnjVsH0GrW0UqhtZ52pWg16/FhjVpANu2Ngb88m/Zo1IL4MICg5FthQcmPKomGVSsFpJQopSYupaRaKUTCIr9TuZhnq76O47iTWBhqysX832EA1ze3COf78LnFDBzvRebP3BrbG2tfUx23eXKwOyvd/tH/a4nus083fKdxIODDXwAAAABJRU5ErkJggg==" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top