[MONGODB] MongoDB를에 사진을 저장
MONGODBMongoDB를에 사진을 저장
이 사용 토네이도 석유와 MongoDB를 수행하려합니다.
avat = self.request.files['avatar'][0]["body"]
nomfich = self.request.files['avatar'][0]["filename"]
try:
image = Image.open(StringIO.StringIO(buf=avat))
size = image.size
type = image.format
avatar = r"/profile-images/{0}/{1}".format(pseudo, nomfich)
except IOError:
self.redirect("/erreur-im")
데이터베이스 코드 :
user={
"pseudo": pseudo,
"password":password,
"email":email,
"tel":tel,
"commune":commune,
"statut":statut,
"nom":nom,
"prenom":prenom,
"daten":daten,
"sexe":sexe,
"avatar":avatar
}
self.db.essog.insert(user)
그리고 일한의 "아바타"저장되지만 어떤 이미지, 그것은 단지 이름이 절약!
내 문제는 :
해결법
-
==============================
1.당신은 반드시 MongoDB의 파일을 저장하기위한 GridFS 필요하지 않습니다, 그러나 분할을 처리하고 바이너리 데이터를 저장하기 때문에 메타 데이터도 제공하면서 확실하게, 그것에게 더 좋은 경험을합니다. 그런 다음 아바타 사진에 당신의 사용자 문서에 ID를 저장할 수 있습니다.
당신은 반드시 MongoDB의 파일을 저장하기위한 GridFS 필요하지 않습니다, 그러나 분할을 처리하고 바이너리 데이터를 저장하기 때문에 메타 데이터도 제공하면서 확실하게, 그것에게 더 좋은 경험을합니다. 그런 다음 아바타 사진에 당신의 사용자 문서에 ID를 저장할 수 있습니다.
코드에서 사용자가 데이터를 저장하지 않는 있지만 그 외에, 당신은 또한, 문서에 직접 바이너리 데이터를 저장할 수 있습니다. 당신은 단순히 PIL.Image 함께 열고있다, 그러나 그것으로 아무것도하지.
당신이 당신의 드라이버 pymongo를 사용하는 가정, 난 그냥 이진 컨테이너에 이진 데이터를 포장 한 다음 저장되어 당신이 무엇을 할 수 있는지 생각합니다. 이것은 나에 의해 테스트되지 않은,하지만 난 그것을 작동합니다 가정 :
from pymongo.binary import Binary binary_avatar = Binary(avat) user={ ... "avatar":avatar, "avatar_file": binary_avatar ... }
이제 존재가 말했다 ... 단지 자신과 사용 GridFS에 더 쉽게. 즉,이 의미있는 것이다.
당신이 GridFS를 사용한다면, 그것은 다음과 같습니다
from gridfs import GridFS avat_ctype = self.request.files['avatar'][0]["content_type"] fs = GridFS(db) avatar_id = fs.put(avat, content_type=avat_ctype, filename=nomfich) user={ ... "avatar_name":avatar, "avatar_id": avatar_id ... }
-
==============================
2.이 삽입 gridfs를 사용하지 않고 MongoDB의에서 이미지를 검색하는 코드입니다.
이 삽입 gridfs를 사용하지 않고 MongoDB의에서 이미지를 검색하는 코드입니다.
def insert_image(request): with open(request.GET["image_name"], "rb") as image_file: encoded_string = base64.b64encode(image_file.read()) print encoded_string abc=db.database_name.insert({"image":encoded_string}) return HttpResponse("inserted") def retrieve_image(request): data = db.database_name.find() data1 = json.loads(dumps(data)) img = data1[0] img1 = img['image'] decode=img1.decode() img_tag = '<img alt="sample" src="data:image/png;base64,{0}">'.format(decode) return HttpResponse(img_tag)
-
==============================
3.오류가있다 :
오류가있다 :
from pymongo.binary import Binary
정확한 구문은 :
from bson.binary import Binary
여러분의 끊임없는 성원에 모두 감사합니다
루카
-
==============================
4.사용해보십시오 carierwave-mongoid https://github.com/jnicklas/carrierwave-mongoid 나는이 경우에 당신을위한 간단하고 쉬운 방법이라고 생각
사용해보십시오 carierwave-mongoid https://github.com/jnicklas/carrierwave-mongoid 나는이 경우에 당신을위한 간단하고 쉬운 방법이라고 생각
-
==============================
5.당신은 pymongo의 바이너리 () 데이터 유형을 사용하여 이진 데이터를 저장해야합니다.
당신은 pymongo의 바이너리 () 데이터 유형을 사용하여 이진 데이터를 저장해야합니다.
http://api.mongodb.org/python/2.0/api/bson/binary.html#module-bson.binary
from https://stackoverflow.com/questions/11915770/saving-picture-to-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 내가 몽구스에서 여러 문서를 업데이트 할 수있는 방법 (0) | 2019.12.12 |
---|---|
[MONGODB] 어레이 내부 MongoDB를 업데이트 중첩 배열 [중복] (0) | 2019.12.12 |
[MONGODB] 어떻게하여 MongoDB에서 인덱스 작업으로 분류 하는가? (0) | 2019.12.12 |
[MONGODB] 유성 수집의 정렬 순서를 업데이트하지 않습니다 구독 (0) | 2019.12.12 |
[MONGODB] Mongoose.js의 instance.save () 콜백 발사하지 (0) | 2019.12.12 |