Изображение загружено на сервер, но не отображается в приложении для 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 решения:
- хорошее решение - сервер должен использовать метку времени в URL-адресе, назначенном для изображения.
- плохое решение - пропустить кеш с помощью glide (skipMemoryChache()).