2011-12-14 4 views
4

Я новичок в Google движке приложений, и я хочу использовать его в качестве сервера, чтобы пользователи могли загружать файл. Я прошел обучение в python. Я не нашел ничего, чтобы на самом деле руководствоваться тем, как загружать файлы на сервер для этой цели.Загрузите файл в Google App Engine и сделайте его загружаемым

+0

Документы предоставляют предварительно написанный образец, который выполняет именно это. Где ты посмотрел? –

+0

Пример гостевой книги и другие основные вещи – JustCurious

ответ

4

Blobstore tutorial дает пример только для этого прецедента. Эта ссылка предоставляет этот код: приложение, которое позволяет пользователям загружать файлы, а затем сразу же загрузить их:

#!/usr/bin/env python 
# 

import os 
import urllib 

from google.appengine.ext import blobstore 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp import blobstore_handlers 
from google.appengine.ext.webapp import template 
from google.appengine.ext.webapp.util import run_wsgi_app 

class MainHandler(webapp.RequestHandler): 
    def get(self): 
     upload_url = blobstore.create_upload_url('/upload') 
     self.response.out.write('<html><body>') 
     self.response.out.write('<form action="%s" method="POST" enctype="multipart/form-data">' % upload_url) 
     self.response.out.write("""Upload File: <input type="file" name="file"><br> <input type="submit" 
      name="submit" value="Submit"> </form></body></html>""") 

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] 
     self.redirect('/serve/%s' % blob_info.key()) 

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) 

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

if __name__ == '__main__': 
    main() 
0

Вы также можете проверить в very good GAE/python app из блога Ника Джонсона, который имеет приятный интерфейс, а также позволяет несколько загрузки, если нужно , Я использовал этот код для своих приложений, которым требуется что-то вроде файловой системы, и управление блоками разрешает это.

Смежные вопросы