Здравствуйте, пишу на Android Studio простенький чат.
Текстовую информацию (автора, текст сообщения, адресата) загоняю в HashMap, преобразую в байтовый массив. Пишу в выходной поток. Тут ничего необычного:
try {
URL url_link = new URL("адрес обработчика данных на сайте");
HttpURLConnection my_connect = (HttpURLConnection) url_link.openConnection();
my_connect.setRequestMethod("POST");
my_connect.setReadTimeout(5000);
my_connect.setConnectTimeout(5000);
my_connect.setDoOutput(true);
my_connect.setDoInput(true);
StringBuilder stringbuilder = new StringBuilder();
HashMap<String, String> map_array = new HashMap<String, String>();
map_array.put("user_from", user_from);
map_array.put("user_to", user_to);
map_array.put("text_m", text_m);
map_array.put("img_m", img_m); // тут проблема
map_array.put("create", "yes");
for (Map.Entry<String, String> p_data : map_array.entrySet()) {
stringbuilder.append(p_data.getKey() + "=" + p_data.getValue() + "&");
}
byte[] byte_arr = stringbuilder.toString().getBytes("UTF-8");
OutputStream my_outs = my_connect.getOutputStream();
my_outs.write(byte_arr);
my_connect.connect();
}
Теперь дело дошло до изображений. Запускаю интент с камерой, фоткаю, фото пишу в файл, в конце получаю bitmap
И не понял как дальше действовать.
1) Пробовал кодировать в base64 строку и отправлять на сервер, с сохранением сразу в мускул. Конечно же понял что это тупо. Строка гигантская, при отправке обратно в андроид она занимает гораздо больше 64кб и не лезет в string.
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] bytes = byteArrayOutputStream.toByteArray();
String myl = Base64.encodeToString(bytes, Base64.DEFAULT);
2) Или мне надо на сервере декодировать base64, что то с ним потом сделать и сохранять? Может нужно как то создавать фото уже на сервере из строки через PHP GD ?
3) Или мне надо как то передавать напрямую Bitmap ?
Подскажите уважаемые эксперты куда копать, вариантов много, инфы в инете так себе, на проработку каждого варианта тратить дни не хочется. Может есть лучшие решения?