#android #image #http #multipartform-data
Вопрос:
Я намерен загрузить изображение с android на php-сервер. Я прокомментировал все в файле php(пустой файл php). Я получаю исключение в MultipartUploadRequest в строке addFileToUpload(путь, «изображение»). Я разделил исходный вызов функции на несколько частей.
код:
try {
String uploadId = UUID.randomUUID().toString();
//Creating a multi part request
MultipartUploadRequest a = new MultipartUploadRequest(this, uploadId, Constants.UPLOAD_URL);
imageName.setText("ill.exc1");
MultipartUploadRequest b = a.addFileToUpload(path, "image"); //Adding file
imageName.setText("ill.exc2");
//Adding text parameter to the request
MultipartUploadRequest c = b.addParameter("name", name); //Adding text parameter to the request
imageName.setText("ill.exc3");
MultipartUploadRequest d = c.setNotificationConfig(new UploadNotificationConfig());
imageName.setText("ill.exc4");
MultipartUploadRequest e = d.setMaxRetries(2);
imageName.setText("ill.exc5");
e.startUpload(); //Starting the upload
imageName.setText("ill.exc6");
} catch(IllegalArgumentException exc) {
}catch(MalformedURLException exc) {
imageName.setText("malf");
}catch (Exception exc) {
//Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show();
imageName.setText("exc");
}
где путь — это путь к файлу строкового изображения. Он получается, как показано ниже.
Uri uri;
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
String path = getPath1(Uri uri);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST amp;amp; resultCode == RESULT_OK amp;amp; data != null amp;amp; data.getData() != null) {
uri = data.getData();
}
}
Для изображения с именем «IMG-20210917-WA0002.jpg» в «телефон/WhatsApp/Медиа/изображения WhatsApp»; путь отображается как-> «/документ/изображение:1009». Правильно ли это?
private String getPath1(Uri uri) {
File file = new File(uri.getPath());//create path from uri
String path = file.getPath();
return path;
}
Ответ №1:
Это сработало отлично
private String getPath4(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":") 1);
cursor.close();
cursor = getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
return path;
}