Web アプリの JavaScript で動的に作成する大きな文字列にテキストのチャンクがあります。ブロブストアに保存したい。しかし、私はそれを機能させる方法を理解できません。通常の blobstoreService.createUploadUrl() コマンドで投稿する URL を作成しています。
文字列を blobstore の URL に投稿する方法の 1 つは、jQuery.ajax を使用することです。
jQuery.ajax({url:blobstore_url,contentType:'multipart/form-data',type:'POST',data:{file:mystring}})
ただし、このコマンドを実行すると、AppEngine エラー「java.lang.OutOfMemoryError: Java heap space」が表示されます。このエラーをグーグルで調べると、フォーム データに必要な「名前」属性が欠落していることがわかりますが、jQuery.ajax を使用してこれを指定する方法がわかりません。
もう 1 つの可能性は、ブラウザーの FormData オブジェクトを使用することです。
formData = new FormData()
formData.append("file",my_string)
xhr = new XMLHttpRequest()
xhr.open("POST", blobstore_url)
xhr.send(formData)
これは正常に実行されますが、「成功」URL が AppEngine サーバー アプリのブロブストアによってトリガーされると、投稿されたブロブのリストが空になります。my_string をファイルオブジェクトとして formData に追加するだけではなく、代わりに何か他のことをする必要があると思います。
私はこれが機能することに非常に近づいていることを知っていますが、いくつかの重要な細部が欠けています。上記の2つのアプローチのいずれかを修正する方法を理解するのを手伝ってくれる人がいれば、私は大喜びします-ありがとう!