2012-12-18 4 views
0

blobstore 키를 저장하고 검색하는 데 어려움이 있습니다. 데이터베이스 행 키를 BLOB 키 # 대신에 얻을 수있는 것 같습니다.파이썬으로 블롭 키를 얻는 방법?

1) 키를 저장하는 방법을 잘 모르겠습니다. 2) 또한 데이터가 어떻게 저장되는지 잘 모르겠습니다. 현재 UserPhoto 데이터 구조에 저장됩니다. 설정 3) 현재 사용자와 관련된 Blob의 키를 검색하여 i에 대한 링크를 표시 할 수 있습니까?

모든 도움을 주시면 대단히 감사하겠습니다. 당신은 출력이 아니라 그 기업 내에서 Blob 저장소의 참조를 구성 할 때 당신은 UserPhoto 엔티티 키를 요구하고

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 
import urllib 


class UserPhoto(db.Model): 
    user = db.StringProperty() 
    user1 = db.EmailProperty()   
    blob_prop = blobstore.BlobKey 
    blob_key = blobstore.BlobReferenceProperty() 


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


    if user: 


     data = UserPhoto.all() 


     #filter data by user e-mail 
     results = data.filter("user1 = ", user.email()) 

     for dt in results: 

      existing_data +='<a href="/serve/%s' % dt.key() + '">' 
      existing_data += '%s' % dt.key() + '<br>' 

     self.response.out.write(
      '<div align=center>Hello %s <a align="center" 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+ 
      """<br>Upload File: <input type="file" name="file"><br> <input type="submit" 
      name="submit" value="Submit"> </form> 
      <br>"""+existing_data + "</div>" 

     ) 

     #the code below is used for testing...purposes only... 
     for b in blobstore.BlobInfo.all(): 
      self.response.out.write('<li><a href="/serve/%s' % str(b.key()) + '">' + str(b.filename) + '</a>') 

    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 = users.get_current_user().email() 

      data.blob_key = str(blob_info.key()) 
      # data.user2[0] = self.get_uploads() 

      data.blob_prop = blob_info.key() 

      data.put() 



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


class ViewPhotoHandler(blobstore_handlers.BlobstoreDownloadHandler): 
def get(self, photo_key): 
    blob_key = str(urllib.unquote(photo_key)) 
    if not blobstore.get(photo_key): 
     self.error(404) 
    else: 
     #self.send_blob(photo_key) 
     #self.send_blob('/serve/%s' % photo_key) 
     self.send_blob(blobstore.BlobInfo.get(blob_key), save_as=True) 


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), 
          ('/view_photo/([^/]+)?', ViewPhotoHandler) 
          ],debug=True) 
def main(): 
    run_wsgi_app(application) 


if __name__ == "__main__": 
    main() 

답변

0

. 그것은이어야한다 :

+0

나는 dt.blob_key를 시도하고 "None"을 리턴한다. 비어있는 dt.blob_prop도 시도했습니다. 객체를 정의하는 방법 또는 객체를 저장하는 방법과 관련이 있다고 생각합니다. – user852415

관련 문제