4

I'm trying to upload my image in base64 to my server using cordova-plugin-file-transfer and until now it's not working. My code is like this:

photoBase64 = photoBase64.replace('data:image/png;base64,', ''); var url = "http://MYURL.com/path"; var options = new FileUploadOptions(); options.fileKey = "file"; options.fileName = "photoName.png"; options.mimeType = "image/png"; var ft = new FileTransfer(); ft.upload(photoBase64, encodeURI(url), function(result) { console.log("Code = " + result.responseCode); console.log("Response = " + result.response); console.log("Sent = " + result.bytesSent); resolve("OK"); }, function(error) { alert("An error has occurred: Code = " + error.code); console.error("ERROR", error); console.log("upload error source " + error.source); console.log("upload error target " + error.target); reject("ERROR"); }, options); 

And I'm getting the following error with this code:

I'm getting the following error:

How can I upload image base64 using cordova-plugin-file-transfer?

Thanks in advance!

2 Answers 2

7

I'm a year late to the party but I just came upon the answer through trial and error:

You must leave "data:image/png;base64," in the string. I assume without that format it's not a valid url.

specifically in your case, delete this line:

photoBase64 = photoBase64.replace('data:image/png;base64,', ''); 

It was really that simple for me to get my upload working.

Sign up to request clarification or add additional context in comments.

1 Comment

thanks for sharing! try using a regex instead like photoBase64.replace(/^data:\w+\/\w+;base64,/, '')
0

The file transfer plugin doesn't take Base64 strings. You have to use the location of the file (file:://android/etc). More info about the File plugin to get the file (this plugin is automatically installed with the filetransfer plugin) is here:

https://github.com/apache/cordova-plugin-file

If you would really want to just use the base64 string, you would have to use $http.post and write a api on the receiving side to recreate the file

4 Comments

Hi Jur. Reading this question on stackoverflow it appears that there is any way to upload base64 image using this plugin, but until now I've not discovered how to do it.
Is your photoBase64 field correct? Maybe your base64 url formatting is wrong? Try to log it.
My base64 string is without initialize, I'm replacing "data:image/png;base64," for "" to have just the data itself, such as: "iVBORw0KGgoAAAANSUhEUgAAAlgAAAMgCAYAAAD/YBzEAAAg... (and so on...)"
@ViníciusMendesdeSouza Just cross check this link - stackoverflow.com/questions/6150289/… to ensure that your base64 image manipulation is right

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.