загрузка multiitpart не работает с Android + рельсы - PullRequest
4 голосов
/ 17 августа 2011

Я хочу загрузить файл + String в мое приложение Rails через приложение для Android. Но я всегда получаю странную ошибку при использовании многочастной загрузки в рельсах.

Я использую Apache HttpClient 4.1.1 + httpMime Lib 4.1.1 на стороне клиента и Rails 3.0.10 на стороне сервера.

CountingMultipartEntity mpEntity = new CountingMultipartEntity(this);
File file = new File(getRealPathFromURI(Uri.parse(local_uri)));
ContentBody cbFile = new FileBody(file, "image/jpeg");

mpEntity.addPart("artifact[binary_payload]", cbFile);
mpEntity.addPart("artifact[description]", new StringBody("test", Charset.forName("UTF-8")));

HttpPost post = new HttpPost(url);
post.setEntity(mpEntity);

HttpResponse response = mHttpClient.execute(post);

это будет строка ошибки в рельсах:

Error during failsafe response: ActionView::Template::Error
  /Users/magu/.rvm/gems/ruby-1.9.2-p136@ssp/gems/activesupport-3.0.10/lib/active_support/whiny_nil.rb:48:in `method_missing'
  /Users/magu/.rvm/gems/ruby-1.9.2-p136@ssp/gems/actionpack-3.0.10/lib/action_dispatch/http/parameters.rb:10:in `parameters'
...
  /Users/magu/.rvm/gems/ruby-1.9.2-p136@ssp/
09:51:55 NoMethodError (undefined method `rewind' for "test":String):

Я не могу найти никакого решения для этого - у кого-нибудь есть подсказка?

спасибо, Martin

1 Ответ

4 голосов
/ 18 августа 2011

Создайте свою составную сущность следующим образом:

MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );

И это сработает.

...