КАК - Загрузка изображения с андроида на сервер rails - multipart - PullRequest
3 голосов
/ 11 июля 2011

Я занимаюсь разработкой приложения для Android и работаю над загрузкой фотографий на мой сервер rails.

Если я загружаю рекламное изображение из браузера, сервер дает мне это (я использую скрепку для загрузки):

КОД КОМИТЕТА

[...] , "immagine"=>#
<ActionDispatch::Http::UploadedFile:0x103026dc8 @headers="Content-Disposition: form-data; name=\"segnalazione[immagine]\";
filename=\"24e14f4a46269f89ace12297b9ed4060aa3b44f5.jpeg\"\r\nContent-Type: image/jpeg\r\n", @content_type="image/jpeg", @tempfile=#<File:/var/folders/Ht/HtQoVYewE-i8RHpa2OY38U+++TI/-Tmp-/RackMultipart20110711-31693-p0wpzx-0>, 
@original_filename="24e14f4a46269f89ace12297b9ed4060aa3b44f5.jpeg">, 
[...]

Мой вопрос: как я могу использовать multipart для корректной загрузки? На андроиде, работая с объектами json я использовал:

HttpPost post = new HttpPost("http://10.0.2.2:3000/segnalaziones?format=json");
            JSONObject eventObj = new JSONObject();
            JSONObject holder = new JSONObject();

            try {
                // Genero l'oggetto JSON
                eventObj.put("categoria1", c1);
                eventObj.put("categoria2", c2);
                eventObj.put("categoria3", c3);
                eventObj.put("descrizione", descr);
                eventObj.put("dove", coord);
                eventObj.put("mood", mood);
                eventObj.put("via", via);
                //eventObj.put("android", android);
                holder.put("commit", "Spedisci");
                holder.put("segnalazione", eventObj);
                Log.e("Event JSON", "Event JSON = "+ holder.toString());
                StringEntity richiesta = new StringEntity(holder.toString());
                post.setEntity(richiesta);
                post.setHeader("Content-Type","application/json");

UPDATE

Я пробовал

HttpPost post = new HttpPost("http://10.0.2.2:3000/segnalaziones");

  MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
  multipartEntity.addPart("commit", new StringBody("Spedisci"));

  multipartEntity.addPart("segnalazione[immagine]", new FileBody(photo)); 


post.setEntity(multipartEntity);  

HttpResponse response = client.execute(post);  

HttpEntity resEntity = response.getEntity();  
if (resEntity != null) {    
  resEntity.consumeContent();  
}

.. но в этом случае сервер получает хорошо, но не «вставляет».

Пожалуйста, посмотрите на экраны ... Этот экран является сообщением из браузера ... все идет хорошо

http://imageshack.us/photo/my-images/219/brozk.png/ enter image description here

Это от андроида ... нет "вставки в" ... ПОЧЕМУ ??

http://imageshack.us/photo/my-images/13/andvv.png/ enter image description here

ЗАМЕТЬТЕ, ЧТО если я отправлю тот же пост без добавления изображения ... "INSERT INTO" работает

1 Ответ

0 голосов
/ 11 июля 2011

вот хорошая статья ссылка . Это помогло мне загрузить изображение с устройства Android на сервер. Я надеюсь, что это также поможет вам.

...