Xamarin.Essentials: Dosya Seçici

FilePicker sınıfı, bir kullanıcının cihazdan tek veya birden çok dosya seçmeye olanak sağlar.

başlarken

Bu API'yi kullanmaya başlamak için kitaplığın projelerinize düzgün bir şekilde yük olduğundan ve ayar olduğundan emin olmak için başlangıç kılavuzunu okuyun.

FilePicker işlevine erişmek için aşağıdaki platforma özgü kurulum gereklidir.

ReadExternalStorageİzin gereklidir ve Android projesinde yapılandırılması gerekir. Bu, aşağıdaki yollarla eklenebilir:

Properties klasörünün altındaki AssemblyInfo.csdosyasını açın ve şunları ekleyin:

[assembly: UsesPermission(Android.Manifest.Permission.ReadExternalStorage)]

VEYA Android Bildirimini Güncelleştir:

Özellikler AndroidManifest.xmldosyanın altındaki dosyanın adını açın ve bildirim düğümünün içine aşağıdakini ekleyin.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Veya Android projesine sağ tıklayın ve projenin özelliklerini açın. Android Bildirimi altında Gerekli izinler: alanına bakın ve bu izni denetleyin. Bu, dosyanın AndroidManifest.xml güncelleştirmesi.

İpucu

İzin denetimleri ve istekleri tarafından otomatik olarak işlenir olduğundan, tüm yöntemler kullanıcı arabirimi iş parçacığında Xamarin.Essentials çağrılır.

Dosya Seç

FilePicker.PickAsync() yöntemi, kullanıcınıza cihazdan bir dosya seçmeyi sağlar. Görüntülemek istediğiniz başlığı ve kullanıcının seçmesine izin verilen dosya türlerini belirtmenize olanak sağlayan yöntemini çağırarak farklı PickOptions bir yöntem kullanabilirsiniz. Varsayılan olarak

async Task<FileResult> PickAndShow(PickOptions options)
{
    try
    {
        var result = await FilePicker.PickAsync(options);
        if (result != null)
        {
            Text = $"File Name: {result.FileName}";
            if (result.FileName.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||
                result.FileName.EndsWith("png", StringComparison.OrdinalIgnoreCase))
            {
                var stream = await result.OpenReadAsync();
                Image = ImageSource.FromStream(() => stream);
            }
        }
        
        return result;
    }
    catch (Exception ex)
    {
        // The user canceled or something went wrong
    }
    
    return null;
}

Varsayılan dosya türleri , FilePickerFileType.Images ve FilePickerFileType.Png ile FilePickerFilerType.Videos sağlanır. Özel dosya türlerini oluştururken belirtebilirsiniz PickOptions ve bunlar platforma göre özelleştirilebilir. Örneğin, belirli dosya türlerini nasıl belirtebilirsiniz?

var customFileType =
    new FilePickerFileType(new Dictionary<DevicePlatform, IEnumerable<string>>
    {
        { DevicePlatform.iOS, new[] { "public.my.comic.extension" } }, // or general UTType values
        { DevicePlatform.Android, new[] { "application/comics" } },
        { DevicePlatform.UWP, new[] { ".cbr", ".cbz" } },
        { DevicePlatform.Tizen, new[] { "*/*" } },
        { DevicePlatform.macOS, new[] { "cbr", "cbz" } }, // or general UTType values
    });
var options = new PickOptions
{
    PickerTitle = "Please select a comic file",
    FileTypes = customFileType,
};

Birden Çok Dosya Seçme

Kullanıcınıza birden çok dosya seçmesi için yöntemini FilePicker.PickMultipleAsync() çağırabilirsiniz. Ayrıca, ek PickOptions bilgi belirtmek için parametresi olarak alır. Sonuçlar ile PickAsync aynıdır, ancak yinelenmiş tek bir FileResult yerine IEnumerable<FileResult> döndürülür.

İpucu

FullPathözelliği her zaman dosyanın fiziksel yolunu geri dönmez. Dosyayı almak için yöntemini OpenReadAsync kullanın.

Platform Farkları

  • Platform farkı yoktur.

API