Posted By: Anonymous
This is probably going to be a stupid question but I’m having one of those nights. In an application I am developing RESTful API and we want the client to send data as JSON. Part of this application requires the client to upload a file (usually an image) as well as information about the image.
I’m having a hard time tracking down how this happens in a single request. Is it possible to Base64 the file data into a JSON string? Am I going to need to perform 2 posts to the server? Should I not be using JSON for this?
As a side note, we’re using Grails on the backend and these services are accessed by native mobile clients (iPhone, Android, etc), if any of that makes a difference.
I asked a similar question here:
You basically have three choices:
- Base64 encode the file, at the expense of increasing the data size by around 33%, and add processing overhead in both the server and the client for encoding/decoding.
- Send the file first in a
multipart/form-dataPOST, and return an ID to the client. The client then sends the metadata with the ID, and the server re-associates the file and the metadata.
- Send the metadata first, and return an ID to the client. The client then sends the file with the ID, and the server re-associates the file and the metadata.