上传到Google云端硬盘 - 如何使用base64编码的图像或图像路径

时间:2015-11-16 19:29:31

标签: javascript image upload google-drive-api ngcordova

Javascript相当新,在尝试了很多事情后仍然遇到这个问题:

我正在使用http://ngcordova.com/docs/plugins/camera/来捕获手机上的图像,并且可以检索为base64编码的图像或图像位置的路径(文件://storage/emulated/...jpg )。

接下来,我使用此功能将文件上传到Google云端硬盘:https://github.com/googledrive/cors-upload-sample

我已成功上传了一个包含给定示例的文本文件:

* @example
 * var content = new Blob(["Hello world"], {"type": "text/plain"});
 * var uploader = new MediaUploader({
 *   file: content,
 *   token: accessToken,
 *   onComplete: function(data) { ... }
 *   onError: function(data) { ... }
 * });
 * uploader.upload();

但是当我上传图片时,它无法查看,我认为这是因为我编码错了。

这是我到目前为止所尝试的内容:

  • 直接使用base64编码的imagedata
  • 创建一个图像/ jpeg类型的blob并将64encoded图像数据放在
  • 在imagedata
  • 前附加“data:image / jpeg; base64”
  • 此人的建议:https://stackoverflow.com/a/27197907/5568940

是否也可以使用FileReader将图像路径读入文件?我只是无法弄清楚究竟应该进入上述示例代码的图像的“file:content”部分。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

上传期待原始图像字节。

没有试过这个,但最简单的方法可能是使用你可以解析为文件的图像URL(也是一个blob:)

类似的东西:

window.resolveLocalFileSystemURL(uri, function(fileEntry) { var errorHandler = ...; fileEntry.file(function(file) { var uploader = new MediaUploader({ file: file, token: accessToken, onComplete: function(data) { ... } onError: function(data) { ... } }); uploader.upload(); }, errorHandler); });