Xamarin формы: расширение изображения не сохраняется с пути в Android, когда сделать выбор нескольких фотографий - PullRequest
0 голосов
/ 18 января 2019

Я следую этой статье для Выберите несколько изображений из галереи в формах Xamarin.

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

Чтобы загрузить изображение на сервер, мне нужно полное имя изображения с расширением. Так как же сохранить полный путь выбранных изображений с расширением?

Следующий метод захвата пути изображения:

public String GetRealPathFromURI(Android.Net.Uri contentURI)
    {
        try
        {
            ICursor imageCursor = null;
            string fullPathToImage = "";

            imageCursor = ContentResolver.Query(contentURI, null, null, null, null);
            imageCursor.MoveToFirst();
            int idx = imageCursor.GetColumnIndex(MediaStore.Images.ImageColumns.Data);

            if (idx != -1)
            {
                fullPathToImage = imageCursor.GetString(idx);
            }
            else
            {
                ICursor cursor = null;
                var docID = DocumentsContract.GetDocumentId(contentURI);
                var id = docID.Split(':')[1];
                var whereSelect = MediaStore.Images.ImageColumns.Id + "=?";
                var projections = new string[] { MediaStore.Images.ImageColumns.Data };

                cursor = ContentResolver.Query(MediaStore.Images.Media.InternalContentUri, projections, whereSelect, new string[] { id }, null);
                if (cursor.Count == 0)
                {
                    cursor = ContentResolver.Query(MediaStore.Images.Media.ExternalContentUri, projections, whereSelect, new string[] { id }, null);
                }
                var colData = cursor.GetColumnIndexOrThrow(MediaStore.Images.ImageColumns.Data);
                cursor.MoveToFirst();
                fullPathToImage = cursor.GetString(colData);
            }
            return fullPathToImage;
        }
        catch (Exception ex)
        {
            Toast.MakeText(Xamarin.Forms.Forms.Context, "Unable to get path", ToastLength.Long).Show();
        }
        return null;
    }

1 Ответ

0 голосов
/ 18 января 2019

Расширение (.png или .jpg) отсутствовало не в GetRealPathFromURI(), а в ImageHelpers.SaveFile(). Поэтому я сохраняю имя файла в другой переменной из пути, используя Path.GetFileName(), как показано ниже, и передаю полное имя файла при вызове ImageHelpers.SaveFile().

var fileName = Path.GetFileName(picturepath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...