2011-12-14 61 views
4

我是Google新应用引擎的新成员,我希望将其用作服务器以便人们下载文件。我已经阅读了python中的教程。我没有找到任何实际指导我如何上传文件到服务器的目的。上传Google App Engine中的文件并将其下载

+0

该文档提供了一个预先写好的样本,完全可以做到这一点。你看起来在哪里? – 2011-12-14 03:24:11

回答

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并且还能够在你需要多个上传。我已经将这些代码用于构建需要类似文件系统和管理blob的应用程序。

相关问题