Изображение загружено на сервер, но не отображается в приложении для Android.

Я создал функцию загрузки фотографий. Пользователь может сделать фотографию, выбрать фотографию из файла и загрузить ее на сервер.

На данный момент фотография успешно загружена на сервер. Но когда я смотрю на свое приложение, оно показывает старое изображение. изображение не обновляется в окне просмотра изображений в моем приложении. Я слышал об общем предпочтении, с помощью которого пользователь может устанавливать свое изображение так долго, как он хочет.

Я использую библиотеку Volley для отправки данных из моего приложения, чтобы загрузить фотографию, и использую библиотеку Glide, чтобы загрузить и показать эту фотографию в приложении.

Я даю небольшую часть своего кода, которая связана с загрузкой и загрузкой фотографий. Пожалуйста, помогите мне определить и решить проблему.

public void showDialog(){
        ........
        alertButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                alert.dismiss();
            }
        });

        alertListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                // ListViekw Clicked item index
                if (position == 0) {

                        cameraIntent();

                }
                else if (position == 1){

                        galleryIntent();

                }
            }
        });
    }


    private void galleryIntent()
    {
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        startActivityForResult(Intent.createChooser(intent, "Select File"),SELECT_FILE);

    }

    public void cameraIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
            File cameraFolder;
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                cameraFolder = new File(Environment.getExternalStorageDirectory(), "image/");
            } else {
                cameraFolder = getActivity().getCacheDir();
            }
            if (!cameraFolder.exists()) {
                cameraFolder.mkdirs();
            }
            String imageFileName = System.currentTimeMillis() + ".jpg";
            File photoFile = new File(cameraFolder + imageFileName);
            currentPhotoPath = photoFile.getAbsolutePath();
            if (photoFile != null) {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
                startActivityForResult(takePictureIntent, REQUEST_CAMERA);
            }
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_FILE){
                onSelectFromGalleryResult(data);

            }

            else if (requestCode == REQUEST_CAMERA) {
                if (!TextUtils.isEmpty(currentPhotoPath)) {
                    galleryAddPic();
                    onCaptureImageResult();
                }
            }
        }
    }

    private void galleryAddPic() {
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        File f = new File(currentPhotoPath);
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        this.getActivity().sendBroadcast(mediaScanIntent);
    }

    private void onCaptureImageResult() {
        Bitmap bitmap = getBitmapFromPath(currentPhotoPath, 200, 200);
        image.setImageBitmap(bitmap);
        compressBitMap(bitmap);
    }

    private void onSelectFromGalleryResult(Intent data) {
        ...
    }


    private void compressBitMap(Bitmap bitmap) {
       ...
    }

    public static Bitmap getBitmapFromPath(String photoPath, int targetW, int targetH) {
        ....
    }

    private void uploadImage(final byte[] bytesArray){


    }

}

2 ответа

Вы ввели нулевую позицию списка, поэтому он отображает старое изображение.

Спасибо

Распространенной ошибкой при загрузке изображения на сервер является использование того же URL-адреса для нового изображения. В этом случае glide будет использовать предыдущее изображение, которое оно уже кэшировало. Есть 2 решения:

  1. хорошее решение - сервер должен использовать метку времени в URL-адресе, назначенном для изображения.
  2. плохое решение - пропустить кеш с помощью glide (skipMemoryChache()).
Другие вопросы по тегам