2013-05-20 18 views
1

我在Google App Engine上使用Python製作郵件應用程序。GAE:如何在1個網頁中合併BlobstoreUploadHandler和RequestHandler

我想在'正常'網頁(發佈到RequestHandler)中啓用附件上傳(發佈到BlobstoreUploadHandler)。

如果用戶填寫了「正常」表格的一部分,如何在用戶上傳他(她)的附件後保留這些值(然後在提交帖子之前用javascript複製所有字段)?

+0

爲什麼不把所有的表單控件放在要發佈到服務器的同一表單中? – Marc

+0

@Marc上傳必須發佈到BlobstoreUploadHandler的派生類,而表單的其餘部分必須發佈到RequestHandler的派生類。因此他們不能是同一個html

的一部分。 – rimvanvliet

+0

上傳:'',其餘部分爲:''; upload_url由GAE生成。 – rimvanvliet

回答

2

你可以寫,從兩個類派生的請求處理程序:

class YourRequestHandler(BlobstoreUploadHandler, RequestHandler): 
    pass 

我也webapp2的的RequestHandlers嘗試這樣做,它的工作原理。 PS:爲了防止孤立的斑點因爲用戶上傳了比應用程序期望的更多的文件(這很容易發生,因爲您無法控制用戶的瀏覽器),我建議您按照以下幾行編寫您的文章處理程序:

def post(self): 
    uploads = self.get_uploads() 
    try: 
     pass # Put your application-specific code here. 
     # As soon as you have stored a blob key in the database (using a transaction), 
     # remove the corresponding upload from the uploads array. 
    finally: 
     keys = [upload.key() for upload in uploads] 
     blobstore.delete_multi(keys) 
+0

Tnx!從未使用過多重繼承......它解決了我的問題。 – rimvanvliet

相關問題