#android #ruby-on-rails #image #upload #paperclip
#Android #ruby-on-rails #изображение #загрузка #скрепка
Вопрос:
в чем дело, хотя это, кажется, старый вопрос, я просто не могу использовать ни один из ответов! Мне нужно загрузить фотографию с Android на rails 4, используя последнюю версию скрепки. это то, что я пытался сделать:
** Я знаю, что StringBody устарел, но я не знаю, что использовать вместо этого. Я также не знаю, является ли то, что я пытаюсь сделать, хорошим вариантом. я делаю это впервые, и я полностью потерян.
public void onClick(View v) {
Thread t = new Thread() {
public void run() {
Intent i = getIntent();
String adCategory = i.getStringExtra("categoryId");
String adTitle = i.getStringExtra("title");
String adPrice = i.getStringExtra("price");
String adDescription = i.getStringExtra("description");
int catId = Integer.parseInt(adCategory);
Looper.prepare();
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpContext context = new BasicHttpContext();
HttpResponse response;
JSONObject json = new JSONObject();
try {
HttpPost post = new HttpPost("http://192.168.0.16:3000/ads");
json.put("category_id", catId);
json.put("title", adTitle);
json.put("price", adPrice);
json.put("description", adDescription);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 100, bos);
byte[] data = bos.toByteArray();
String file = Base64.encodeBytes(data);
builder.addPart("picture", new StringBody(file));
builder.addPart("json", new StringBody(json.toString()));
HttpEntity entity = builder.build();
post.setEntity(entity);
response = client.execute(post);
if(response!=null){
InputStream in = response.getEntity().getContent(); //Get the data in the entity
}
} catch(Exception e) {
e.printStackTrace();
}
Looper.loop();
}
};
t.start();
Intent intent = new Intent(context, NewAdActivity.class);
startActivity(intent);
}
});