我在一个大字符串中有一大段文本,我在 web 应用程序的 javascript 中动态创建。我想将它保存到 blob 存储。但是,我不知道如何使它工作。我正在使用通常的 blobstoreService.createUploadUrl() 命令创建要发布到的 URL。
将我的字符串发布到 blobstore url 的一种可能性是使用 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 指定它。
另一种可能性是使用浏览器的 FormData 对象:
formData = new FormData()
formData.append("file",my_string)
xhr = new XMLHttpRequest()
xhr.open("POST", blobstore_url)
xhr.send(formData)
这运行良好,但是当我的 AppEngine 服务器应用程序中的 blobstore 触发我的“成功”url 时,发布的 blob 列表为空。我假设我不能只是将 my_string 作为文件对象附加到 formData,而是需要做其他事情。
我知道我非常接近这项工作,但缺少一些重要的小细节。如果你们中的任何人可以帮助我弄清楚如何解决上述两种方法中的任何一种,我会很高兴-谢谢!