【发布时间】:2013-06-01 08:01:53
【问题描述】:
使用带有 base64 数据的 PUT 请求将图像 (PNG) 上传到 Google 云存储时,图像 (PNG) 不会显示在浏览器中,并说它包含错误(在 FF 中查看时)。
在文本编辑器中打开图像文件后,我可以看到 base64 数据“data:image/png;base64,iVBORw...”,因此它不会被转换为二进制。
我是要上传二进制文件还是有办法让它与 HTTP 正文中的 base64 一起使用?
基本代码示例。
var base64img = "data:image/png;base64,iVB...";//截图 var xhr = new XMLHttpRequest(); xhr.open("PUT", ""); xhr.setRequestHeader("内容类型", "图片/png"); xhr.setRequestHeader("x-goog-acl", "public-read"); //尝试对文件设置公共读取 xhr.setRequestHeader("内容长度", base64img.length); // Chrome 抛出错误 xhr.send(base64img); 脚本>根据我在网上阅读的内容,我认为这是可能的,但我找不到任何示例可以准确显示 PUT 的完成方式,以表明缺少什么才能使其正常工作。
【问题讨论】:
-
我很困惑,为什么你要上传base 64 编码的说你什么时候可以简单地上传二进制数据?二进制上传的效率要高得多。
-
因为我认为我在某处读到 base64 数据平均要小 33%,但现在你说我想知道我是否读错了。如果是这种情况,那么我将继续使用 blob。感谢您的回复。
-
好吧,我确实读错了.. stackoverflow.com/questions/9722603/… .. :)
-
是的,如果您希望获得更高的效率,您肯定不想使用 b64。值得我重写作为答案吗?
-
嗨,再次感谢,是的,这就是我们关闭这些东西的方式吗?...我是堆栈新手。
标签: base64 put google-cloud-storage