Java.io.FileNotFoundException при использовании retrofit2 для загрузки изображений - PullRequest
0 голосов
/ 13 декабря 2018

Когда я пытался использовать retrofit2 для загрузки изображений, я получал эту ошибку

: java.io.FileNotFoundException (Нет такого файла или каталога).

HashMap<String, RequestBody> partMap = new HashMap<>();
file = new File(draggablePresent.getImageUrls().valueAt(0))            
RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"), file);
partMap.put("image\"; filename=\"" + file.getName() + "\"", fileBody);
compositeDisposable.add(iModelCustomer.uploadFiles(partMap)
              .subscribeOn(Schedulers.io())
              .observeOn(AndroidSchedulers.mainThread())
              .subscribe(new Consumer<String>() {
                  @Override
                  public void accept(String wcustomer) throws Exception {
                      Log.e("TAGgggg", wcustomer);

                  }
              }, new Consumer<Throwable>() {
                  @Override
                  public void accept(Throwable throwable) throws Exception {
                      Log.e("TAGpppp", throwable.toString());
                  }
              })
);

Я получил ошибку:

E / TAGpppp: java.io.FileNotFoundException: файл: /data/user/0/com.yaoyaodate.www.yaoyaodate/cache/cropped_1544702564825.jpg (неттакой файл или каталог)

Я добавил этот код:

Log.d("filepath",draggablePresent.getImageUrls().valueAt(0));
Glide.with(this).load(draggablePresent.getImageUrls().valueAt(0)).into(imgtest);
HashMap<String, RequestBody> partMap = new HashMap<>();
file = new File(draggablePresent.getImageUrls().valueAt(0));
Log.d("filename",file.getName());

Я получил правильное имя и изображение.Я мог получить файл cropped_1544702564825.jpg через оболочку ADB.Вывод:

D / filepath: file: ///data/user/0/com.yaoyaodate.www.yaoyaodate/cache/cropped_1544702564825.jpg D / filename: cropped_1544702564825.jpg

Я искал в Google целый день и не смог решить.

Любая помощь?

Я также добавляю эти коды:

if(file.exists()){
                 Toast.makeText(this,""+file.getName(),Toast.LENGTH_SHORT).show();
            }

Тост не отображается.Если файл не существует, почему метод getName выводит правильное имя?Я также добавляю

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Это не работает.

1 Ответ

0 голосов
/ 14 декабря 2018

Это может работать, замените "file: ///" на "/".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...