Как отправить мульти часть файла с Android на остальные веб-службы (Spring)? - PullRequest
0 голосов
/ 10 ноября 2018

Я хочу отправить Multipart файл с устройства Android на службу отдыха, которая была разработана весной.

Вот мой код Android ..

 @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {

      Uri filePath = data.getData();

        try {
            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
            imageView.setImageBitmap(bitmap);

        } catch (IOException e) {
            e.printStackTrace();
        }

        try {

            String path = getPath(filePath);
            //Creating a multi part request
            new MultipartUploadRequest(this,"http://localhost:8080/samplerestfullservice/classtest/upload1")
                    .addFileToUpload(path, "image")//Adding file 
                    .setNotificationConfig(new UploadNotificationConfig())
                    .setMaxRetries(2)
                    .startUpload(); //Starting the upload

        } catch (Exception exc) {
            Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
}


 public String getPath(Uri uri) {
    String[] projection={MediaStore.Images.Media.DATA};
    Cursor cursor=getContentResolver().query(uri,projection,null,null,null);
    if(cursor == null){
        return null;
    }
    int columnIndex= cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String s=cursor.getString(columnIndex);
    cursor.close();
    return s;
}

А мой сервисный код

@RequestMapping(value = "/upload1", method = RequestMethod.POST, headers = "Content-Type= multipart/form-data" )
@ResponseBody
public void fileUpload(@RequestParam MultipartFile file){       

    System.out.print("Success");

    // rest of the code

}

И я объявил интернет-разрешение в manifest.xml, но клиентский запрос не доходит до службы. И я не знаю, есть ли проблемы с совместимостью.

Пожалуйста, любой может дать предложение.

Спасибо.

1 Ответ

0 голосов
/ 18 ноября 2018

Я написал легкую и простую в использовании библиотеку, которая решает вашу проблему. Здесь описано https://stackoverflow.com/a/53253933/8849079:)

...