简体   繁体   中英

Uploading to Google Drive - how to use a base64-encoded image or an image path

Fairly new to Javascript and still running into this problem after trying a lot of things:

I'm using http://ngcordova.com/docs/plugins/camera/ to capture an image on the phone and can retrieve as either a base64-encoded image or as a path to the image location (file://storage/emulated/...jpg).

Next I'm using this to upload files to google drive: https://github.com/googledrive/cors-upload-sample

I've successfully uploaded a text file with the given example:

* @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();

But when I upload an image, it cannot be viewed and I assume it is because I have encoded it wrong.

Here's what I've tried so far:

  • using the base64-encoded imagedata directly
  • creating a blob of image/jpeg type and putting the 64encoded imagedata inside
  • appending "data:image/jpeg;base64," in front of the imagedata
  • this person's suggestion: https://stackoverflow.com/a/27197907/5568940

Is it also possible to use a FileReader to read the image path into a File instead? I just can't figure out what exactly should go into the "file: content" part for an image for the above example code.

Any help would be greatly appreciated!

The upload is expecting the raw image bytes.

Haven't tried this, but easiest approach is likely working with the image URL which you can resolve to a file (which is also a blob :)

Something like:

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); });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM