可能な限り検索してきましたが、この質問についてはまったく助けになりませんでした。バックボーンjavascriptでpython GAEを使用して小さなプログラムに取り組んでいます.ユーザーが以下のhtmlフォームで新しい本を作成し、新しい本をGAEデータストアに保存できるようにしたい.フォームには文字列と画像が含まれています.
<form>
<div><label>Title:</label> <input type="text" id="title" name="book_title" ></div>
<div><label>Author:</label> <input type="text" id="author" name="book_author" ></div>
<div><label>Picture:</label> <input id="image" type="file" class="upload" name="img" /></div>
<div><img id="img_preview" src="#" alt="image" ></img></div>
<div><button class="create_book">Create Book</button></div>
</form>
ローカル ファイル システムからブックの画像を選択することは、プレビュー用にページにサムネイル画像を読み込むために、displayPicture メソッドによって処理されます。
「Create Book」ボタンのクリックイベントは、javascript ファイルの createBook メソッドによって処理されます。
event:{
"click .create_book": "createBook" ,
"change .upload": "displayPicture",
......
},
createBook:function(){
this.model.set({
title: $('#title').val(),
author: $('#author').val(),
image: this.pictureFile.name
});
......
app.bookList.create(this.model,{wait:true,
success:function(){
alert("A new book has been created!");
}
});
return false;
},
......
displayPicture: function(evt){
var files = evt.target.files;
if(files){
this.pictureFile = files[0];
var reader = new FileReader();
reader.onloadend = function(){
$('#img_preview').attr('src',reader.result).width(200).height(200);
};
reader.readAsDataURL(this.pictureFile);
},
..........
Pythonサーバー側で:
class Book(db.Model):
title = db.StringProperty()
author = db.StringProperty()
image = db.BlobProperty()
class createBook(webapp.RequestHandler):
def post(self):
book = Book()
book.title = self.request.get("title")
book.author = self.request.get("author")
book.image = db.Blob(self.request.get("image"))
book.put()
......
application = webapp.WSGIApplication(
[
.....
('/books/?',createBook)
],
debug=Ture
)
プレビュー用のページにサムネイル画像しか表示できませんが、新しい本の作成に失敗し、「app.bookList.create(...)」という行がPOSTリクエストをpythonサーバー側に送信し、リクエストは「createBook」メソッドによって処理されますが、Firebug は「self.request.get("title"/"author"/"image")」行が空の文字列であることを示しています。これは、フォームのコンテンツがから取得されないことを意味します。 Http リクエストを適切に。私のコード スニペットの問題点を教えてください。ご協力いただきありがとうございます。