2010-12-04 2 views
1

UPDATE :데이터 저장소에 이미지를 쓰는 방법은 무엇입니까?

systempuntoout하여 주석을 참조하십시오. 양식에 제출 버튼이 누락되었습니다. 이제 모든 것이 작동합니다.


데이터 저장소에 이미지를 쓰는 것이 좋습니다. 하지만 happenning 아니에요 :

class AvatarSave(webapp.RequestHandler): 
    def post(self): 
     q = User.all() 
     q.filter("userEmail =", "[email protected]") 
     qTable = q.fetch(10) 
     if qTable: 
      for row in qTable: 
       avatar = images.resize(self.request.get("img"), 32, 32) 
       row.avatar = db.Blob(avatar) 
       db.put(qTable) 
     else: 
      self.response.out.write("user not found") 

     self.redirect('/') 

로그는 이미지 키를 보여줍니다

INFO  2010-12-04 13:56:26,601 dev_appserver.py:3317] "GET /img? 
img_id=ag1oZWxsby0xLXdvcmxkcgsLEgRVc2VyGIABDA HTTP/1.1" 200 - 

을하지만 아무것도 깨진 링크를 제외하고는 표시되지 않습니다. 내가 여기서 무엇을 놓치고 있니? 도와 주셔서 감사합니다. 아래에는 전체 스크립트가 포함되어 있습니다. 감사! 난 당신이 질문에보고하지 않은 User 모델을 추론 코드를 시도했습니다

self.response.out.write(""" 
      <form action="/avatar-save" enctype="multipart/form-data" method="post">     
      <div><label>Avatar:</label></div> 
      <div><input type="file" name="img"/></div> 
      <input type="submit"/> 
      </form>... 

:

class MainPage(webapp.RequestHandler): 
    def get(self): 
     siteUser = users.get_current_user() 
     greeting = None   
     if siteUser: 
      greeting = ("Welcome, %s! (<a href=\"%s\">sign out</a>)" % 
        (siteUser.nickname(), users.create_logout_url("/"))) 
     else: 
      greeting = ("<a href=\"%s\">Sign in or register</a>" % 
        users.create_login_url("/")) 

     self.response.out.write(greeting)    

     self.response.out.write(""" 
      <form action="/avatar-save" enctype="multipart/form-data" method="post">     
      <div><label>Avatar:</label></div> 
      <div><input type="file" name="img"/></div> 
      </form> 
     </body> 
     </html>""") 

     query = User.all() 
     query.filter("userEmail =", "[email protected]") 
     query.order("-userScore") 
     results = query.fetch(10) 
     self.response.out.write("""<html><head><style> 
           body {font-size: small; 
            font-family: Verdana, Helvetica, sans-serif; 
            }</style> 
            </head><body><ol>""") 
     for result in results: 
      self.response.out.write("<li>") 
      self.response.out.write("<b>%s</b> %s " % (result.userName, result.userLatestComment)) 
      self.response.out.write("<div><img src='img?img_id=%s'></img>" % result.key()) 
      self.response.out.write("</li>") 
     self.response.out.write("</ol></body></html>") 

class Image (webapp.RequestHandler): 
    def get(self): 
     greeting = db.get(self.request.get("img_id")) 
     if greeting.avatar: 
      self.response.headers['Content-Type'] = "image/png" 
      self.response.out.write(greeting.avatar) 
     else: 
      self.response.out.write("No image") 

class AvatarSave(webapp.RequestHandler): 
    def post(self): 
     q = User.all() 
     q.filter("userEmail =", "[email protected]") 
     qTable = q.fetch(10) 
     if qTable: 
      for row in qTable: 
       avatar = images.resize(self.request.get("img"), 32, 32) 
       row.avatar = db.Blob(avatar) 
       db.put(qTable) 
     else: 
      self.response.out.write("user not found") 

     self.redirect('/') 

application = webapp.WSGIApplication(
            [('/', MainPage), 
             ('/img', Image), 
             ('/avatar-save', AvatarSave),          
             ], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

답변

3

난 당신의 코드가 이미지의 양식 제출 버튼을 제출없는 생각

class User(db.Model): 
    userEmail = db.EmailProperty() 
    userScore = db.IntegerProperty() 
    avatar = db.BlobProperty() 

코드에는 사용자를 생성 할 수있는 부분이 없기 때문에 개발 대화 형 콘솔에서 처음으로 사용자를 만들었습니다 :

from main import User 
User(userEmail='[email protected]', userScore=1).put() 

그러면 [email protected]으로 로그인했으며 사진을 업로드했습니다.
alt text

내가 말할 수는 "내 컴퓨터에서 작동"된다

은 결과입니다.

+3

안녕하세요 systempuntoout : 시간을내어 도와 주셔서 감사합니다. 정말 고마워. 이제 내 컴퓨터에서도 작동합니다! – Zeynel

+1

@Zeynel 당신을 환영합니다; MainPage 핸들러도 확인하십시오. 태그를 두 번 닫으면됩니다. – systempuntoout

관련 문제