【问题标题】:Xamarin & Multiple FilepickerXamarin 和多个文件选择器
【发布时间】:2020-08-13 07:53:43
【问题描述】:

我正在 Xamarin 上构建一个项目。现在我有一个大问题。我需要浏览用户的计算机以上传任何文件。他当然可以上传多个文件。据我所知,Xamarin 不提供对所有系统的浏览,而只是提供它的浏览。所以我试图找到一种拖放方式,但没有找到。我尝试了一个文件选择器,但他让我只选择一个文件(我的客户一次会上传 100 个文件),所以它不适合我的需要。最后我决定做我自己的浏览系统,但由于用户界面的原因,它需要很长时间才能浏览。你有什么解决办法吗?我将不胜感激带有允许多个文件的文件选择器的软件包。

谢谢

【问题讨论】:

    标签: ios xamarin uwp upload filepicker


    【解决方案1】:

    你试过 UWP 中的 FileOpenPicker 类吗?

    支持选择多个文件,查看方法FileOpenPicker.PickMultipleFilesAsync

    示例

    1. 在Forms项目中定义接口

      public interface MyFilePicker
      {
          Task OpenFilePickerAsync();
      }
      
    2. 在 UWP 项目中实现

      [assembly: Dependency(typeof(UWPFilePicker))]
      namespace App24.UWP
      {
          class UWPFilePicker : MyFilePicker
          {
              public async Task OpenFilePickerAsync()
              {
                  var openPicker = new FileOpenPicker();
                  openPicker.ViewMode = PickerViewMode.Thumbnail;
                  openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
                  openPicker.FileTypeFilter.Add(".jpg");
                  openPicker.FileTypeFilter.Add(".jpeg");
                  openPicker.FileTypeFilter.Add(".png");
                  IReadOnlyList<StorageFile> files = await openPicker.PickMultipleFilesAsync();
                  if (files.Count > 0)
                  {
                      StringBuilder output = new StringBuilder("Picked files:\n");
                      // Application now has read/write access to the picked file(s)
      
                  }
                  else
                  {
                      return;
                  }
              }
          }
      }
      
    3. 在 Forms 项目中调用它

      private async void Button_Clicked(object sender, EventArgs e)
      {
          MyFilePicker service = DependencyService.Get<MyFilePicker>();
          await service.OpenFilePickerAsync();
      }
      

    【讨论】:

    • 但它是跨平台的吗?还是我应该为 IOS 和 UWP 编写代码?
    • 只在UWP中使用,可以创建依赖服务来调用。
    • 你能解释一下这真的很有趣吗?
    • 我试图让它工作,但我不能有一个错误 iAsyncOperation 。我认为您的带有依赖服务的解决方案更有用,但我不知道如何实现它
    • 查看教程:docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…,这只是从特定平台调用原生api的一种方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多