图像上传到服务器但未在Imageview应用程序android中显示

时间:2017-09-19 08:34:31

标签: android sharedpreferences android-volley android-glide imagedownload

我创建了照片上传功能。用户可以拍照并从文件中选择照片并将其上传到服务器。

此时照片已成功上传到服务器。但是,当我看到我的应用程序时,它显示的是旧图像。我的应用中的imageview中的图片未更新。我已经听说过用户可以根据需要设置图像的共享优势。

我正在使用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 个答案:

答案 0 :(得分:0)

图像加载到服务器的一个常见错误是使用相同的URL作为新图像。在这种情况下,滑行将使用它已缓存的上一个图像。 有2个解决方案

  1. 一个好的解决方案 - 服务器应该在分配给图像的网址中使用时间戳。
  2. 一个糟糕的解决方案 - 使用滑动跳过缓存(skipMemoryChache())。

答案 1 :(得分:0)

您已进入列表的第0个位置,因此显示旧图像。