2012-12-16 5 views
0

저는 GAE Blostore를 처음 사용합니다 .... 나는 GAE를 통해 업로드 된 이미지의 URL을 표시하려고하는데 어려움을 겪고 있습니다 .... 어떤 도움도 받으실 수 있습니다.블로 스토어 사진 URL 만들기

1) 아래 코드는 16 진수 형식의 키를 표시합니다. 그 이유는 확실하지 않습니다.

2) 또한 16 진수 값 키를 사용하여 이미지의 URL을 가져 오거나 만들려면 어떻게해야합니까?

from google.appengine.api import users 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
from google.appengine.ext import blobstore 
from google.appengine.ext.webapp import blobstore_handlers 
from google.appengine.ext import db 
from google.appengine.ext import blobstore 

#import os 
import urllib 
class UserPhoto(db.Model): 
    user = db.StringProperty() 
    user1 = db.EmailProperty() 
    blob_key = blobstore.BlobReferenceProperty()# blobstore.BlobKey # 




class MainPage(webapp.RequestHandler): 
    def get(self): 
     user = users.get_current_user() 
     upload_url = blobstore.create_upload_url('/upload') 
     existing_data = "<br>" 






    if user: 
     #user_photo = UserPhoto(user=users.get_current_user().email() 
     data = UserPhoto.all() 

     results = data.filter('user1 =',user.email()) 
     rmvStr = len("<__main__.UserPhoto object at ") 



     for blob in results: 


      existing_data += "Blob item key # : "+ str(blob)[rmvStr:len(str(blob))-1] +" <br>" 
      #existing_data += "Blob item key # : "+ str(blob) +" <br>" 


      #self.response.out.write("value of blob is: " + str(blob)) 

     self.response.out.write(
      'Hello %s <a href="%s">Sign out</a><br>Is administrator: %s' % 
      (user.nickname(), users.create_logout_url("/"), users.is_current_user_admin())   
      +'<form action="%s" method="POST" enctype="multipart/form-data">' % upload_url+ 
      """Upload File: <input type="file" name="file"><br> <input type="submit" 
      name="submit" value="Submit"> </form> 
      <br>"""+existing_data 
     ) 
    else: 
     self.redirect(users.create_login_url(self.request.uri)) 


class UploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
     upload_files = self.get_uploads('file') # 'file' is file upload field in the form 

     blob_info = upload_files[0] 
     user = users.get_current_user() 

     if user: 
      data = UserPhoto() 
      data.user1 = user.email() 
      data.blob_key = blob_info.key() 

      data.put() 




     #self.redirect('/serve/%s' % blob_info.key()) 
     self.redirect('/') 

class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler): 
    def get(self, resource): 
     resource = str(urllib.unquote(resource)) 
     blob_info = blobstore.BlobInfo.get(resource) 
     self.send_blob(blob_info) 



application = webapp.WSGIApplication([('/', MainPage), 
          ('/upload', UploadHandler), 
          ('/serve/([^/]+)?', ServeHandler)], 
          debug=True) 
def main(): 
    run_wsgi_app(application) 


if __name__ == "__main__": 
    main() 

답변

0

여기에서 전체적인 질문에 렌치를 던지는 것이 싫지만 파일 API를 고려해야합니다. Google Cloud Storage가 지원하며 액세스 용 인터페이스는 정말 빠르고 사용하기 쉽습니다. 특히 당신이 단지 당신의 앱을 시작하는 중이라면, blobstore를 통해 그것을 권하고 싶습니다.

사용자 사진을 작성하는 경우 Blobstore를 실행할 수있는 것보다 저렴한 비용으로 작업 대기열에서 2 ~ 3 개의 크기를 크 런치하고 Cloud Storage에 버릴 수 있습니다.

+0

실험적이라는 사실 외에도 파일 API는 원하는 방식이 아닙니다. create_upload_url은 사용자가 정말로 원하는 경우 업로드를 GCS에 쓸 수 있습니다. 나는 GCS가 왜 더 저렴할 것이라고 생각하는지 전혀 모른다. –

+0

제안 해 주셔서 감사합니다. 이 프로젝트에서는 Google App Engine Blobstore를 사용하도록 요청 받았습니다. – user852415