[SOLVED] How to upload an image using POST API

This one I tried copying the raw body Postman generates from the formdata dropdown builder and pasting it into the raw option. I manually added parameters like “filename” but I’m not sure how to add the actual file data. In this one the API workflow did create a new thing, but it didn’t put any information into it, even though the text parameters are clearly still there like before.

I tried the “binary” body option but that just gives me a “could not get a response” message.

Here is a Curl request that worked on another app.

Here you are, with a workflow called upload_image that creates a thing whose field is going to be the content of file.

curl -X POST https://yourappname.bubbleapps.io/api/1.0/wf/upload_image -H “Content-Type: application/json” -d ‘{“file”:{“filename”:“image.png”, “contents”:“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”}}’

Thanks, I think we’re on the right track. If I copy the JSON array and paste it into Postman under raw, and select application/json from the pulldown, and tell my API workflow to expect a parameter named “file” to be placed into a file field in a thing, then I get an image uploaded to Amazon that displays properly in Bubble’s image element.

So far I haven’t been able to replicate that success from my desktop app. I keep getting a formatting error. First it was an unexpected token and now it’s a very specific message saying that the content for the image file is missing. That seems like a positive trend, since the server knows enough about what’s going on to give me a specific error message.

I think I got it.

The reference says to put the base64 string into “content” but the server is looking for “contents” with an “s”.

Oops you’re right, sorry about that. Will fix the reference.

For what it’s worth, I also found another way of doing things.

This post is fascinating. He’s doing some really cool stuff with javascript in an html element. One of the neat things I learned is that you can put the entire base64 content of an image into a “link”.

So something that did technically work for me was to upload the base64 into a thing’s text field with “data:image/jpg:base64,” concatenated onto the beginning. Then I put that text into an html element with this code "<img src="search for whatever:first item's text field" width="200px"/> It’s ugly and clunky and slow, but it’s an option.

2 Likes

Hokay, so, here’s what seems to be working for me:

  1. get your file (name and data)
  2. isolate and url encode the filename (somefile.jpg)
  3. base64 encode the filedata
  4. put the filename into array1[filename]
  5. put the filedata into array1[contents]
  6. put “false” into array1[private] (I haven’t tried making it private and attached to a database thing yet)
  7. put that array into array2[file] (I tried changing that but the server stopped accepting it, so apparently it has to be “file”)
  8. put anything else you need into array2[], for example “some example text” into array2[example]
  9. convert array to JSON (as required) what you end up with is something like this:
    array2={
    file={filename=file’s-name.jpg, private=false, contents=base64}
    example=some example text
    }
  10. setup your API to recognize the “file” parameter as a file and the “example” parameter as text
  11. change the headers to “Content-Type: application/json”
3 Likes

Since I’m looking at it, I noticed that the reference still says “content” when it should be “contents”

1 Like

You are best to file this with a bug_report so it doesn’t get lost in the forum or forgotten.

1 Like

What did you need to do to encode the .jpg to base64?

Same guy, I just don’t feel like switching to my primary account.

So I used Livecode, which has a command to encode the data as base 64.

After fiddling a long time with the “detect data”-function to get this to work I tried it with just adding the data format myself.
Just put the Key “file” and Type “image” by hand and it magically works.

Wondering if anyone has had luck with this since. I believe I’ve got my JSON object formatted properly, being passed to my endpoint, but the result I get in the bubble db is a blank image.

cc @iggyvanlith @emmanuel

Look correctly at the first part of your video (Emmanual Post).
The file information are store in a “file” parameter (you can call it whatever you want)
this give

{
	"file": {
		"filename": "filename.jpg",
		"contents": "base64 encoded data"
	}
}
1 Like

Thanks @Jici, I’ve tried with that exact format as well (with the file JSON object, then filename and contents stored in that object) but no luck. Just retested and I’m still getting this as the record in the DB.

What did you set for the initialize setting of “file”?

1 Like

@Jici thanks for the help here – here’s the initialize call (1st image) and the api workflow detect data result for the endpoint I’m trying to set up


should the “contents” data be set as a file as I’m doing?

1 Like

I forget. But if you use autodetect, the file is split in two part. You can save contents to field (just set image or field) but you need to save the name in another field.
I test it with
data:image/gif;base64,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
without any problem.

Now if you want to save it to s3, I recommend to manually encode the api data. It should save to s3 this way with the filename.

@Jici or others - how does one save the base64 as a file? My original assumption was that the file contents were going to be saved to S3 and referencing that as the source of the the image I create.

When creating the Image record (like first image) I’m still getting it as a Base64 filetype (second image)


Dear blueback09, could you please advice how to do this : 10. setup your API to recognize the “file” parameter as a file and the “example” parameter as text

Thanks in advance