将文本字符串发布到App Engine blobstore URL

时间:2011-06-28 20:55:37

标签: javascript jquery google-app-engine blobstore

我在一个大字符串中有一大块文本,我在web应用程序中使用javascript动态创建。我想将它保存到blob商店。但是,我无法弄清楚如何使它工作。我正在使用通常的blobstoreService.createUploadUrl()命令创建要发布到的URL。

将我的字符串发布到blobstore网址的一种可能性是使用jQuery.ajax:

jQuery.ajax({url:blobstore_url,contentType:'multipart/form-data',type:'POST',data:{file:mystring}})

然而,当我运行此命令我得到的AppEngine错误“java.lang.OutOfMemoryError:Java堆空间”。谷歌搜索这个错误表明我的表单数据缺少必要的“名称”属性,但我无法弄清楚如何指定使用jQuery.ajax。

另一种可能性是使用浏览器的FormData对象:

   formData = new FormData()
   formData.append("file",my_string)
   xhr = new XMLHttpRequest()
   xhr.open("POST", blobstore_url)
   xhr.send(formData)

这运行正常,但后来当我的“成功” URL由Blob存储在我的AppEngine上的服务器应用程序触发,贴斑点的列表是空的。我想我不能只是追加my_string到FORMDATA作为一个文件对象,但需要做别的东西来代替。

我知道我非常接近这项工作,但我遗漏了一些重要的细节。如果你们中的任何人可以帮我弄清楚如何解决上述两种方法中的任何一种,我会很高兴 - 谢谢!

1 个答案:

答案 0 :(得分:3)

我终于找到了一个能够付出更多努力的解决方案 - 对于遇到这个问题的其他人来说,如果您按照下面帖子中的步骤操作,AppEngine blobstore将接受您的字符串数据:

Javascript: Uploading a file... without a file