Dosya seçici
Bu makalede .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) IFilePicker
arabirimini nasıl kullanabileceğiniz açıklanmaktadır. Arabirimle IFilePicker
, kullanıcıdan cihazdan bir veya daha fazla dosya seçmesini isteyebilirsiniz.
Arabirimin IFilePicker
varsayılan uygulaması özelliği aracılığıyla FilePicker.Default
kullanılabilir. IFilePicker
Hem arabirim hem FilePicker
de sınıf ad alanında Microsoft.Maui.Storage
yer alır.
Başlarken
İşlevlere FilePicker erişmek için aşağıdaki platforma özgü kurulum gereklidir.
Uygulamanız Android 12 veya daha düşük bir sürüme sahipse, izin istemeniz READ_EXTERNAL_STORAGE
gerekir. Uygulamanız Android 13 veya üzerini hedeflediyse ve diğer uygulamaların oluşturduğu dosyalara erişmesi gerekiyorsa, izin yerine READ_EXTERNAL_STORAGE
aşağıdaki ayrıntılı izinlerden birini veya daha fazlasını istemeniz gerekir:
READ_MEDIA_IMAGES
READ_MEDIA_VIDEO
READ_MEDIA_AUDIO
Bu izinler aşağıdaki yollarla eklenebilir:
Derleme tabanlı izni ekleyin:
Platforms/Android/MainApplication.cs dosyasını açın ve yönergelerin ardından
using
aşağıdaki derleme özniteliklerini ekleyin:[assembly: UsesPermission(Android.Manifest.Permission.ReadExternalStorage, MaxSdkVersion = 32)] [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaAudio)] [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaImages)] [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaVideo)]
- veya -
Android Bildirimini güncelleştirin:
Platforms/Android/AndroidManifest.xml dosyasını açın ve düğüme
manifest
aşağıdakileri ekleyin:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <!-- Required only if your app needs to access images or photos that other apps created --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <!-- Required only if your app needs to access videos that other apps created --> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <!-- Required only if your app needs to access audio files that other apps created --> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
- veya -
Bildirim düzenleyicisinde Android Bildirimi'ni güncelleştirin:
Visual Studio'da Platformlar/Android/AndroidManifest.xml dosyasına çift tıklayarak Android bildirim düzenleyicisini açın. Ardından, Gerekli izinler'in altında yukarıda listelenen izinleri denetleyin. Bu, AndroidManifest.xml dosyasını otomatik olarak güncelleştirir.
Önemli
İzin denetimleri ve istekleri .NET MAUI tarafından otomatik olarak işlenmek için tüm yöntemlerin kullanıcı arabirimi iş parçacığında çağrılmalıdır.
Bir dosya seçin
yöntemi, PickAsync
kullanıcıdan cihazdan bir dosya seçmesini ister. Seçici ile PickOptions
izin verilen başlık ve dosya türlerini belirtmek için türünü kullanın. Aşağıdaki örnekte seçicinin açılması ve seçili görüntünün işlenmesi gösterilmektedir:
public async Task<FileResult> PickAndShow(PickOptions options)
{
try
{
var result = await FilePicker.Default.PickAsync(options);
if (result != null)
{
if (result.FileName.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||
result.FileName.EndsWith("png", StringComparison.OrdinalIgnoreCase))
{
using var stream = await result.OpenReadAsync();
var image = ImageSource.FromStream(() => stream);
}
}
return result;
}
catch (Exception ex)
{
// The user canceled or something went wrong
}
return null;
}
Varsayılan dosya türleri , FilePickerFileType.Png
ve FilePickerFilerType.Videos
ile FilePickerFileType.Images
sağlanır. Sınıfının bir örneğini FilePickerFileType
oluşturarak platform başına özel dosya türleri belirtebilirsiniz. Bu sınıfın oluşturucu, platformu tanımlamak için türü tarafından DevicePlatform
anahtarlanan bir sözlük alır. Sözlük anahtarının değeri, dosya türlerini temsil eden bir dize koleksiyonudur. Örneğin, belirli çizgi roman dosya türlerini şu şekilde belirtebilirsiniz:
var customFileType = new FilePickerFileType(
new Dictionary<DevicePlatform, IEnumerable<string>>
{
{ DevicePlatform.iOS, new[] { "public.my.comic.extension" } }, // UTType values
{ DevicePlatform.Android, new[] { "application/comics" } }, // MIME type
{ DevicePlatform.WinUI, new[] { ".cbr", ".cbz" } }, // file extension
{ DevicePlatform.Tizen, new[] { "*/*" } },
{ DevicePlatform.macOS, new[] { "cbr", "cbz" } }, // UTType values
});
PickOptions options = new()
{
PickerTitle = "Please select a comic file",
FileTypes = customFileType,
};
Dosya türüne göre dosya aramak bir platformdan diğerine farklı olabilir. Daha fazla bilgi için bkz . Platform farklılıkları.
Birden çok dosya seçme
Kullanıcının birden çok dosya seçmesini istiyorsanız yöntemini çağırın FilePicker.PickMultipleAsync
. Bu yöntem ayrıca ek bilgi belirtmek için bir PickOptions
parametre alır. Sonuçlar ile aynıdır PickAsync
, ancak döndürülen tür yerine FileResult
, seçilen dosyaların tümüyle bir IEnumerable<FileResult>
tür döndürülür.
Bahşiş
FullPath özelliği her zaman dosyanın fiziksel yolunu döndürmez. Dosyayı almak için yöntemini kullanın OpenReadAsync .
Platform farklılıkları
Bu bölümde, dosya seçici ile platforma özgü farklar açıklanmaktadır.
PickOptions.PickerTitle
, kullanıcıya ilk istemde görüntülenir, ancak seçici iletişim kutusunun kendisinde görüntülenmez.
Dosyaları türe göre filtrelerken dosyanın MIME türünü kullanın. MIME türlerinin listesi için bkz . Mozilla - Yaygın MIME türleri.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin