android/rails multipart upload problem
- by trioglobal
My problem is that I try to upload an image and some text values to an rails server, and the text values end up as files, insted of just param values.
How the post looks on the server
Parameters: {"action"="create", "controller"="problems", "problem"={"lon"=#File:/tmp/RackMultipart20100404-598-8pi1vj-0, "photos_attributes"={"0"={"image"=#File:/tmp/RackMultipart20100404-598-pak6jk-0}}, "subject"=#File:/tmp/RackMultipart20100404-598-nje11p-0, "category_id"=#File:/tmp/RackMultipart20100404-598-ijy1oo-0, "lat"=#File:/tmp/RackMultipart20100404-598-1a7140w-0, "email"=#File:/tmp/RackMultipart20100404-598-1b7w6jp-0}}
part of the android code
try {
File file = new File(Environment.getExternalStorageDirectory(),
"FMS_photo.jpg");
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://homepage.com/path");
FileBody bin = new FileBody(file);
Charset chars = Charset.forName("UTF-8");
MultipartEntity reqEntity = new MultipartEntity();
//reqEntity.addPart("problem[subject]", subject);
reqEntity.addPart("problem[photos_attributes][0][image]", bin);
reqEntity.addPart("problem[category_id]", new StringBody("17", chars));
//....
post.setEntity(reqEntity);
HttpResponse response = client.execute(post);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
resEntity.consumeContent();
}
return true;
} catch (Exception ex) {
//Log.v(LOG_TAG, "Exception", ex);
globalStatus = UPLOAD_ERROR;
serverResponse = "";
return false;
} finally {
}