Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
class ServeFile(BlobstoreDownloadHandler): #webapp route: (r'/([a-hA-H0-9]{32})/.*', ServeFile),
def get(self, md5):
result = blobstore.BlobInfo.all().filter('md5_hash =', md5).get()
if not result: return self.error(404)
self.send_blob(result.key())class ServeLatest(BlobstoreDownloadHandler): #webapp route: (r'/(.*)', ServeLatest),
def get(self, filename):
result = blobstore.BlobInfo.all().filter('filename =', filename).order('-creation').get()
if not result: return self.error(404)
self.send_blob(result.key())indexes:
- kind: __BlobInfo__
properties:
- name: filename
- name: creation
direction: desc
# Properties:
# content_type: Content type of blob.
# creation: Creation date of blob, when it was uploaded.
# filename: Filename user selected from their machine.
# size: Size of uncompressed blob.
# md5_hash: The md5 hash value of the uploaded blob.
Простой файловый хостинг на Google App Engine