J'ai remarqué que je faisais une fonction d'enregistrement et d'édition d'article. Avec l'API actuelle, plusieurs images seront téléchargées avec une API. Le temps de transmission est très long et l'expérience utilisateur est médiocre.
J'ai vérifié Mercari (http://mercari.jp) pour voir comment font les autres applications ici. Mercari semble télécharger sur le serveur chaque fois qu'une image est sélectionnée.
C'est pourquoi j'ai essayé de l'imiter. Le programme de téléchargement est terminé. Je pensais toucher Mercari, mais un jour j'aimerais aussi ajouter une fonction de traitement d'image!
#Télécharger l'image
class PutImage(UserLoginAuthRequestHandler):
def post(self):
if self.invalidateAccount():
Common.writeUserResponseError(self, 401,u"Session invalide")
return
blob = self.request.get('blob')
content_type = self.request.params['blob'].type
blobHash = hashlib.md5(blob).hexdigest()
gcsPath = Common.createImagePath(blobHash)
Common.saveToGCS(gcsPath,blob,content_type)
entity = ImageFile()
entity.path = gcsPath
entity.md5 = blobHash
entity.put()
res = dict(
url = webapp2.uri_for('GetImage',_full=True,imageid=entity.key.id())
)
Common.writeUserResponseSuccess(self, res )
#Renvoie l'image spécifiée
class GetImage(UserLoginAuthRequestHandler):
def get(self):
imageid = int(self.request.get('imageid'))
item = ImageFile.get_by_id(imageid)
path = item.path
gcs_file = gcs.open(path)
gcs_stat = gcs.stat(path)
self.response.content_type = gcs_stat.content_type
self.response.content_type_params = None
self.response.write(gcs_file.read())
gcs_file.close()
app = webapp2.WSGIApplication(
[
webapp2.Route('/user/api/resource/putimage', PutImage,'PutImage'),
webapp2.Route('/user/api/resource/getimage', GetImage,'GetImage'),
],
debug=Common.isDebug()
)
Avec ce genre de sentiment, la fonction d'enregistrement / d'édition des éléments du cercle a été ajoutée. https://github.com/nagai/freemarket/tree/20140429 La prochaine fois, nous créerons un lieu de vente au comptant.
Recommended Posts