2013-03-27 1 views
0

저는 Python 및 Google App Engine의 초보자입니다. GAE Datastore에 이미지를 저장해야합니다 (BLOBSTORE가 아닙니다. BLOBSTORE에 저장해야 할 예제가 많이 있고 BLOBSTORE에서 작동하고 있습니다).Datastore Blob에 이미지를 저장할 URL 생성

movie = Movie() 
... 
movie.picture = db.Blob(urlfetch.Fetch(picture_url).content) 
movie.put() 

내 문제는 내가 picture_url을 얻을 수 있습니까 방법은 다음과 같습니다

워드 프로세서가있다? this가 Blobstore 용이므로 create_upload_url 메서드를 사용할 수 없습니다. 이 질문은 당신이 당신이 시작하는 이미지 데이터를 얻을하려는 방법을 사람들에게해야하기 때문에 아무도 그것을 대답 할 수 없습니다 방식으로 표현한 사전

+0

왜 당신이 첫번째 장소에있는 데이터 저장소의 이미지를 필요합니까 사용하는 거라고? 나중에 봉사 할 계획입니까? –

+0

예. 나는 그들을 나중에 봉사 할 필요가있다. 그리고 네, Blobstore를 사용할 수 있다는 것을 알고 있습니다. 그러나 파일은 다소 작습니다. 데이터 저장소에 BLOB를 저장하는 것과 BLOBSTORE의 성능 및 기타 동작 특성을 비교하려고합니다. –

+0

데이터 저장소에서 파일을 검색하는 데는 추가 사용이 필요합니다. 인스턴스 시간 + 데이터 저장소 읽기 때문에 이미지 API를 사용할 수 없습니다. n 이미지는 Image API의 get_serving_url 메소드를 호출하여 제공 할 수 있습니다. 그렇다면 파일을 blobstore에 업로드 한 다음 읽어서 (BlobReader 참조) 데이터 저장소에 저장 한 다음 blob을 삭제할 수 있습니다. –

답변

0

감사합니다.

사용중인 코드는 일부 URL에서 이미지를 다운로드하여 blobstore에 저장하는 것입니다. 당신은 공개적으로 액세스 할 수있는 이미지 URL을 flickr 또는 facebook 또는 다른 웹 사이트에서 URL로 사용할 수 있어야합니다. 어떤 URL을 사용할지 결정해야합니다.

사용자가 데이터를 업로드하게하려면 사용자가 multipart/form-data에서 이미지로 POST 요청을해야합니다. 요청 처리기의 request.POST 개체에서 데이터를 처리합니다. 이 경우 URL에서 가져올 수 없습니다.

Blobstore를 사용하는 경우 GAE는 자동으로 POST 요청 데이터를 구문 분석하여 Blobstore에 저장하고 URL을 제공합니다. Blobstore를 사용하지 않는다면, 요청 객체의 이미지 데이터 만 메모리에 저장하게됩니다.

+0

예. 어떻게 혼란 스러웠는지 알 수 있습니다. 예, 사용자가로드 한 이미지를 가져 오려고했습니다. 알았다. 나는 당신의 제안에 따라 할 것입니다. 나는 위의 코드 블록을 구글 문서에서 보았을 때 업로드 된 이미지에 대해 blobstore로 할 수있는 것처럼 URL을 얻을 수있는 방법이 있다고 생각했기 때문에 나는 망 쳤다. 감사 –

0
db.Blob(urlfetch.Fetch(picture_url).content) 

은 다른 웹 사이트에서 이미지를 가져 오는 데 사용됩니다. 당신은 사용자가 업로드 한 무언가를 저장하려면

, 당신은 더 나은

data = self.request.get('data') # where 'data' is the data field from your HTML form 
if data : 
    db.Blob(data) 
관련 문제