天天看点

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 欢迎小伙伴访问