2010-11-24 45 views
1

這是我的代碼,該upload.py HTML5上傳穆蒂文件如何使用的谷歌應用程序引擎(蟒蛇)

<form enctype="multipart/form-data" action="/" method="post"> 
    <input type="file" name="file" multiple="true" /> 
    <input type="submit" /> 
</form> 

可以使用file = self.request.POST['file']來獲得一個文件,但使用html5多文件,

如何獲得muti文件使用python時發佈?

感謝

上傳

它確定現在,按照這篇文章:Receive multi file post with google app engine

class Download_file(db.Model): 
    data = db.BlobProperty(required=True) 
    mimetype = db.StringProperty(required=True) 
    download_url = db.StringProperty() 

class BaseRequestHandler(webapp.RequestHandler): 
    def render_template(self, filename, template_args=None): 
    if not template_args: 
     template_args = {} 
    path = os.path.join(os.path.dirname(__file__), 'templates', filename) 
    self.response.out.write(template.render(path, template_args)) 

class upload(BaseRequestHandler): 
    def get(self): 
     files=Download_file.all() 
     self.render_template('index.html',{'files':files}) 
    def post(self): 
     files = self.request.POST.multi.__dict__['_items'] 
     #self.response.out.write(files) 
     for file in files: 
      file=file[1] 
      obj = Download_file(data=file.value, mimetype=file.type) 
      obj.put() 
      file_url = "http://%s/download/%d/%s" % (self.request.host, obj.key().id(), file.filename) 
      file_url = "<a href='%s'>%s</a>" % (file_url,file_url,) 
      obj.download_url=file_url 
      obj.put() 
      self.response.out.write("Your uploaded file is now available at %s </br>" % (file_url)) 

class download(BaseRequestHandler): 
    def get(self,id,filename): 
     #id=self.request.get('id') 
     entity = Download_file.get_by_id(int(id)) 
     self.response.headers['Content-Type'] = entity.mimetype 
     self.response.out.write(entity.data) 

回答

2

你可能想使用這個Blob存儲服務;我寫了一系列文章(1,2,3),介紹瞭如何使用上傳小部件將多文件上傳到blobstore。

+0

哇!這只是讓我想在週末再次開啓GAE ^^ – 2010-11-25 12:09:01

1

據我所知,在request.POST['file']應該是文件的字典,即POST['file']應該有鍵作爲上傳文件的名稱和值應分別爲文件的內容,即POST['file']['avatar.png'] = ... # raw image data

我不知道GAE HTTP Request類提供的功能是什麼,但它應該與此一致。無論如何,這是絕對self.request,somwhere!

編輯:

好吧,我只注意到GAE爲您創建一個文件對象,我的猜測是這應該工作:

for file in POST['file']: 
    obj = MyModel(data=file.value, mimetype=file.type) 
    obj.put() 
+0

嗨,request.POST ['file']不是字典,它是FieldStorage,它不能循環,http://python.about.com/od/cgiformswithpython/ss/pycgitut1_3.htm – zjm1126 2010-11-24 18:08:38

相關問題