Express js를 사용하여 계정 생성에 사용자 이미지를 업로드하시겠습니까?[닫은]

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

문제

저는 노드 js를 처음 사용하고 사용자가 세부 정보가 포함된 계정을 생성하는 간단한 앱을 만들고 있으며 백엔드에서 mongodb를 사용하여 사용자 세부 정보, 이름 이메일 등을 저장했습니다.

계정을 생성한 후 사용자가 로그인해야 하는 로그인 페이지로 리디렉션하고 로그인에 성공하면 사용자는 지금 세션을 사용하여 자신의 이름을 표시하는 프로필로 리디렉션됩니다.

이제 내가 원하는 것은 계정 생성 시 사용자 이미지를 업로드하고 싶은데 이를 mongodb에 저장하는 동안 스크린샷에 표시된 대로 내 계정 생성 양식에 어떻게 연결하는지 궁금합니다.

사용자가 로그인할 때 해당 사용자의 이미지를 프로필 사진으로 표시하고 프로필 페이지로 리디렉션하고 싶습니다.

mongodb에 이미지를 저장하는 방법에 대한 많은 링크를 찾았지만 어떤 도움도 얻을 수 없었으며 프로필 페이지 스크린샷도 첨부합니다.

이것을 어떻게 구현할 수 있습니까?enter image description here

프로필 페이지

enter image description here

도움이 되었습니까?

해결책

프로필 사진을 MongoDB에 저장하고 싶다면.꼭 가보시길 권합니다 언제 GridFS를 사용해야 합니까?

그런 다음 사용자가 업로드할 수 있는 프로필 사진의 최대 크기를 결정하세요.

몽고DB BSON 문서는 16MB로 제한됩니다.따라서 사용자의 전체 문서 총량이 16MB를 초과하지 않는 경우 다음을 사용하여 문서에 직접 저장할 수 있습니다. BinData 데이터 형식.

이미지/비디오/PDF/Ppt/스프레드시트 등 - 전혀 중요하지 않으며 동일한 방식으로 저장할 수 있습니다.웹 앱에 제대로 표시되도록 헤더에 적절한 콘텐츠 유형을 반환하는 것은 애플리케이션에 달려 있습니다.

즐거운 코딩하세요..:)


업데이트:그렇게 하려면 다음과 같이 이미지 데이터를 base64로 인코딩해야 합니다.

var base64Image = new Buffer(uploadedFilesData, 'binary').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