Пытаюсь научиться отправлять картинку (и рядом еще json) на сервер но никак не получаеться. Вот код интерфейса:
@Multipart
@POST("index.php")
Call<ResponseModel> uploadImage(@Part("json_field") String description, @Part("image") RequestBody image);
Вот код как я создаю намерение для получения фото:
if (Build.VERSION.SDK_INT <=19){
Intent intent = new Intent();
intent.setType("image/jpeg");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Выбор изоброжения"),100);
} else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, 100);
}
Ошибку выводить на всех версиях sdk. Вот код получения изоброжения:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100 && resultCode == RESULT_OK){
Uri imageUri = data.getData();
File file = new File(String.valueOf(imageUri));
RequestBody requestFile = RequestBody.create(imageType, file);
uploadData(requestFile);
}
}
ну и естественно текст ошибки:
/content:/media/external/images/media/31037: open failed: ENOENT (No such file or directory)
Проблема в этой строчке. У вас неправильно считывается Uri
File file = new File(String.valueOf(imageUri));
Попробуйте`
File file = new File(getPath(imageUri));
Метод getPath()
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(projection[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
return filePath;
}
И поменяйте интент, если будет выдавать NullPointerException на такой
Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеются 10 листов, в которых происходит то самое действие
У меня есть JS код, где написан Ajax-запрос к серверу:
уважаемые коллегиЯ только недавно начал осваивать js и jquery, и в процессе написания одного скрипта для расчётчика возникла проблема
Помогите пожалуйста, понят что я делаю не такВсё время получаю 'Login failed'