专栏首页林德熙的博客Xamarin.Forms 选取文件 让用户选择本地文件

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}";
            }
        }

此时用户可以不选择文件,如果用户不选择文件,那么将拿到一个空值

现在 CrossFilePicker 的 Open 和 Save 方法都过时了,请使用 Xamarin.Essentials.FileSystem 代替,或者用 Xamarin.Essentials.ShareFile 将文件分享给其他应用打开

这个项目所有代码放在 github 欢迎小伙伴访问

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Roslyn 如何了解某个项目在 msbuild 中所有用到的属性以及构建过程

    使用 SDK Style 格式的 csproj 十分简化,但是实际上的构建过程需要用到超级多的逻辑,那么如何知道在 msbuild 所使用的构建过程有哪些,定义...

    林德熙
  • Roslyn 打包自定义的文件到 NuGet 包

    在使用 sdk 格式的项目文件支持快速进行打包,但使用这个方式打包的时候将默认只带程序集输出文件,而没有带依赖的文件。本文告诉大家如何在打包的时候加上需要放在包...

    林德熙
  • wpf 如何使用 Magick.NET 播放 gif 图片

    最近在做 gif 播放,发现 gif 播放需要很多内存,于是就使用 Magick.NET 播放,但是这个方式也需要很多的内存。播放一张 uwp 萤火虫 需要 ...

    林德熙
  • JDK1.9-常用类Math

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    cwl_java
  • SeaweedFS

    seaweedfs是一个非常优秀的由 golang 开发的分布式存储开源项目。它是用来存储文件的系统,并且与使用的语言无关,使得文件储存在云端变得非常方便。

    一滴水的眼泪
  • YOLOv5是真的吗?并不比YOLOv4强,不配这个名字

    是不是超厉害?这不正表明我们的研究和科技发展速度超快吗?毕竟这个广受欢迎的目标检测框架的新一代 v4 版本刚发布不久,下一代 v5 版本就横空出世了。YOLOv...

    机器之心
  • 「吐血整理」再来一打Webpack面试题

    从头发的浓密程度和干练的走路姿势我察觉到,面前坐着的这位面试官也是一把好手。我像以往一样,准备花3分钟的时间进行自我介绍。在此期间,我的目光被16寸的MacBo...

    童欧巴
  • CentOS 7系统中安装Eclipse

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/...

    魏晓蕾
  • 基于stm32的水质监测系统项目基础部分详细记录

    在进行项目软件的撰写时,首先新建一个基于该项目的工程模板。对于初学者,很多都是直接用开发板提供商提供的现成的工程模板,但是那样的工程模板在项目开发中体态略显臃肿...

    CherishTheYouth
  • PyCharm证书过期:Your license has expired

    报错“your evaluation license has expired, pycharm will now exit” 1、解决步骤,点击‘Activat...

    北京-宏哥

扫码关注云+社区

领取腾讯云代金券