到目前为止,我们一直在 JavaScript 中使用 Backbone 以及 Java Servlet 在客户端和服务器之间同步数据。我们使用 Jackson 将 JSON 转换为 Java 对象服务器端。
我们的模型是一个个人资料对象,其中包含有关用户的基本信息,例如姓名、电子邮件等,现在我们想要向该对象添加个人资料图片。
我们尝试了 FileReader——将图像上传到客户端,然后将其转换为 Base64。这对于使用 JSON 上传非常有效。但我们现在了解到 FileReader 并未得到完全支持(特别是在旧版本的 IE 和 Safari 以及某些移动浏览器上)。
我们考虑过进行表单分段上传,但随后我们将不得不破坏 Backbone ,因为我们将不再在保存期间发送 json。还不清楚我们是否可以使用 Jackson 自动将数据解析为 JavaObject,或者我们是否必须自己完成。 File upload seems fairly straight-forward ,但自动编码(marshal)处理不会。
肯定有人以前遇到过这个问题?
最佳答案
我对图片上传的想法:支持的浏览器就继续做Base64。这样您就可以按预期使用 Base64 和 JSON。看起来所有版本的 Chrome、Firefox 以及最新版本的 Safari 和 Internet Explorer 都支持它。
然后,对于那些不支持它的人,请执行两次 api 调用:一次上传图像(返回 url),一次上传商家数据(带有 url)。这样我们仍然可以使用backbone/json/jackson作为商家数据,同时保持向后兼容性
关于javascript - Backbone + FileUpload + Java Servlet + Jackson - Base64 = 噩梦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091331/