天天看點

Xamarin.Forms 選取檔案 讓使用者選擇本地檔案

在 Xamarin 中,使用檔案存儲或打開某個特定檔案都是很常用的做法,而在跨平台中,每個平台都有自己的 IO 的坑。如何在 Xamarin.Froms 裡面讓使用者可以選擇打開哪個本文檔案,需要照顧多個不同的平台的檔案通路方式

在 Xamarin.Forms 右擊管理 NuGet 程式包,搜尋 Xamarin.Plugin.FilePicker 進行安裝,或在 csproj 上添加下面代碼

<PackageReference Include="Xamarin.Plugin.FilePicker" Version="2.1.36-beta" />           

複制

如果不是讓使用者選取檔案内容,那麼在 Xamarin.Essentials 這個提供了 Xamarin 原生 API 互動的庫就完全足夠使用了

在界面上添加一個按鈕,用來讓使用者選取檔案内容

<StackLayout>
        <Label x:Name="FileText" Margin="10,10,10,10"></Label>
        <Button HorizontalOptions="Center" Text="選取檔案" Clicked="Button_OnClicked"></Button>
    </StackLayout>           

複制

在背景代碼添加按鈕點選時讓使用者選擇檔案的代碼

using Plugin.FilePicker;

        private async void Button_OnClicked(object sender, EventArgs e)
        {
            var pickFile = await CrossFilePicker.Current.PickFile();
            if (pickFile is null)
            {
                // 使用者拒絕選擇檔案
            }
            else
            {
                FileText.Text = $@"選取檔案路徑 :{pickFile.FilePath}";
            }
        }           

複制

此時使用者可以不選擇檔案,如果使用者不選擇檔案,那麼将拿到一個空值

Xamarin.Forms 選取檔案 讓使用者選擇本地檔案

現在 CrossFilePicker 的 Open 和 Save 方法都過時了,請使用

Xamarin.Essentials.FileSystem

代替,或者用

Xamarin.Essentials.ShareFile

将檔案分享給其他應用打開

這個項目所有代碼放在 github 歡迎小夥伴通路