2
這裏我試圖上傳一個文件異步到blobstore。以下是我到目前爲止已經完成:如何使用goog.net.IframeIo在Python中將文件上傳到Blobstore?
HTML文件
<form id="my_form" enctype="multipart/form-data" method="POST"
action="/partner">
<input type="file" id="my_file" name="my_file"/>
</form>
JS文件
my.Project.prototype.onFileUpload = function(e) {
var uploadForm = /** @type {HTMLFormElement} */ (
goog.dom.getElement('my_form'));
var iframeIo = new goog.net.IframeIo();
goog.events.listen(iframeIo, goog.net.EventType.COMPLETE, function() { alert('request complete'); });
iframeIo.sendFromForm(uploadForm);
Python代碼
class MyHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
logging.info(self.request) // I can see my file in this line's output
upload_files = self.get_uploads('my_file')
logging.info(upload_files) //upload_files come out to be an empty array
blob_info = upload_files[0]
self.redirect('/partner/serve/%s' % blob_info.key())
關於如何讓文件上傳到Request對象的任何指針。 由blobstore的google教程提供的python代碼可以在here找到。
現在我被卡住了。我相信如果我可以用Python代碼獲取文件,我將能夠上傳它。 任何指針都會非常有幫助。
感謝,
莫希特
感謝丹尼爾回答。在示例應用程序中,他們正在創建URL,因爲他們首先希望用戶在創建表單的MainHandler中着陸,以便於文件上載。如果你看到表單,他們已經提供了創建的URL。在我的情況下,我不想要MainHandler。所以我在我的HTML表單本身中有了action =「URL」。此外,我可以成功擊中所需的處理程序。唯一的問題是從請求對象中取出文件。我希望這能更清楚地說明我的問題。 – EMM
我不明白你的意見。您需要POST到'create_url'返回的URL,否則上傳不起作用。 AppEngine將處理上傳,然後發送到您自己的方法。 –