0

사진 업로드 기능을 만들었습니다. 사용자는 사진을 찍어서 파일에서 사진을 선택하여 서버에 업로드 할 수 있습니다.이미지가 서버에 업로드되었지만 이미지 뷰 응용 프로그램에 표시되지 않았습니다. android

사진이 서버에 업로드되었습니다. 하지만 내 애플 리케이션을 보면 오래된 이미지를 보여주고있다. 이미지가 내 앱의 이미지 뷰에서 업데이트되지 않습니다. 필자는 사용자가 원하는만큼 이미지를 설정할 수있는 공유 선호도에 대해 들었습니다.

사진을 업로드하고 글라이드 라이브러리를 사용하여 사진을 다운로드하여 앱에 표시하려면 내 앱의 POST 데이터에 Volley 라이브러리를 사용하고 있습니다.

사진 업로드 및 다운로드와 관련된 코드의 일부만 제공하고 있습니다. 문제를 확인하고 해결하도록 도와주세요.

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){ 


    } 

} 

답변

0

서버에 이미지를로드하는 데 공통적 인 실수는 새 이미지에 대해 동일한 URL을 사용하는 것입니다. 이 경우 글라이드는 이미 캐시 된 이전 이미지를 사용합니다. 2 개 솔루션이 있습니다

  1. 좋은 해결책 - 서버가 이미지에 할당 된 URL에 타임 스탬프를 사용해야합니다.
  2. 잘못된 해결책 - 글라이드 (skipMemoryChache())로 캐시를 건너 뜁니다.
+0

저는 두 번째 해결책을 묶었지만 전혀 작동하지 않습니다. 더 나은 해결책에 대해 좀 더 설명해주십시오. 그것은 나를 위해 정말로 도움이 될 것입니다. 나는 어제부터 이세 스와 붙어 있었다. 나는 아직도 안드로이드 개발에있어 매우 새롭다. – tamrezh21

+0

새 이미지를 업로드 할 때 이전 이미지를 대체 할 방법이 있습니까? – tamrezh21

+0

첫 번째 해결 방법은 서버 내에 있습니다. 서버가 이미지 URL을 할당하면 사용자 ID가 사용됩니다. http :/mydomain/uploadimage & user = userid & time = 20170920183312 –

0

목록의 0 번째 위치를 입력하면 이전 이미지가 표시됩니다.

감사합니다.

+0

어떻게하면 업데이트 된 이미지를 볼 수있는 코드를 수정할 수 있습니까? – tamrezh21