Как загрузить картинку в аватар из галерею и на адрес сервера?
Я использую Websocket. Вот код с помощью которого я загружаю из галерею картинку в аватарку. Но мне еще надо эту картинку которую я выбрала из галереи отправить на сервер. Как мне это сделать?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case 0:
if(resultCode == RESULT_OK){
Uri selectedImage = imageReturnedIntent.getData();
iv_photo_my.setImageURI(selectedImage);
}
break;
case 1:
if(resultCode == RESULT_OK){
Uri selectedImage = imageReturnedIntent.getData();
iv_photo_my.setImageURI(selectedImage);
}
break;
}
}
Ответы (1 шт):
Не совсем понятно в какой кодировке вы должны это отправлять. Поэтому я предложу вариант который используется мной, чтобы как-то определить то что вам нужно. Код будет на Kotlin, но с java в целом они практически полностью похожи и проблем с пониманием-переводом быть не должно. После выбора фотографии вы получаете ее uri:
val fileUri = data.data!!
дальше вам нужно так же как-то получить имя и размер:
var name = ""
var size: Long? = null
для этого можно использовать contentResolver:
fileUri.let { returnUri ->
contentResolver.query(returnUri, null, null, null, null)
}?.use { cursor ->
val nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
val sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE)
cursor.moveToFirst()
name = cursor.getString(nameIndex)
size = cursor.getLong(sizeIndex)
}
следующим этапом вы должны конвертировать файл в стринг. Поэтому считываем байты:
val content = data.data?.let { uri -> contentResolver.openInputStream(uri).use { it!!.readBytes() } }
и кодируем (кодировку я не знаю какую вы используете):
val fileContent = String(content!!, Charsets.ISO_8859_1)
ну и после того как вы получили содержимое файла в виде стринга, можно его отправлять по схеме которая у вас должна быть. Если вы не знаете в каком виде сервер ждет файл, то лучше связаться с бекендерами и узнать подробности.