【问题标题】:Uploading to Google Drive - how to use a base64-encoded image or an image path上传到 Google Drive - 如何使用 base64 编码的图像或图像路径
【发布时间】:2015-11-16 19:29:31
【问题描述】:

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

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

接下来我用它来上传文件到谷歌驱动器: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 编码的图像数据
  • 创建一个图像/jpeg 类型的 blob 并将 64 编码的图像数据放入其中
  • 在图像数据前面附加“data:image/jpeg;base64”
  • 此人建议:https://stackoverflow.com/a/27197907/5568940

是否也可以使用 FileReader 将图像路径读入 File 中?对于上述示例代码,我只是无法弄清楚图像的“文件:内容”部分究竟应该包含什么内容。

任何帮助将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    上传需要原始图像字节。

    没有尝试过,但最简单的方法可能是使用可以解析为文件的图像 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); });

    【讨论】:

    • 谢谢史蒂夫!这看起来正是我所需要的。附带说明一下,我遇到了 window.resolveLocalFileSystemURL() 的问题,但我认为这是一个单独的问题。
    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2015-06-17
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多