【问题标题】:Xamarin File Mime TypeXamarin 文件 Mime 类型
【发布时间】:2018-09-25 07:49:27
【问题描述】:

我目前将开发一个 Xamarin 应用跨平台 (iOS/Android),它通过 CrossDownloadManager 下载文件并使用 SharpZipLib.Portable 解压缩 zip。

一切正常,但我想在将下载文件发送到解压缩库之前检查下载文件的 mime 类型以避免任何问题。 我不能使用文件的扩展名,因为不是必需的。

【问题讨论】:

  • 如果mime类型不对怎么办?只需将文件传递给解压缩库并让它确保它是正确的。

标签: c# android ios xamarin


【解决方案1】:

根据好奇号的answer,这就是你的做法:

public String getMimeType(Uri uri) {
    String mimeType = null;
    if (uri.Scheme.Equals(ContentResolver.SchemeContent))
    {
        ContentResolver cr = Application.Context.ContentResolver;
        mimeType = cr.GetType(uri);
    }
    else
    {
        String fileExtension = MimeTypeMap.GetFileExtensionFromUrl(uri.ToString());
        mimeType = MimeTypeMap.Singleton.GetMimeTypeFromExtension(
        fileExtension.ToLower());
    }
    return mimeType;
}

【讨论】:

    【解决方案2】:

    *使用 MimeTypes Nuget 包:https://www.nuget.org/packages/MimeTypes/

    您只需传递文件名即可获取其内容类型:

    var mimeType = MimeTypes.GetMimeType(fileName);
    

    这就是我在 Xamarin.iOS [C#] 中使用图像选择器的 FinishedPickingMedia 方法获取 mime 类型图像的方法

    NSUrl referenceURL = e.Info[new NSString("UIImagePickerControllerReferenceURL")] as NSUrl;
    if (referenceURL != null)
    {
        var fileName = referenceURL.Path.ToString();
        var url = referenceURL.ToString();
        Console.WriteLine(referenceURL.ToString());
    }
    
    
    ALAssetsLibrary assetsLibrary = new ALAssetsLibrary();
    assetsLibrary.AssetForUrl(referenceURL, delegate (ALAsset asset)
    {
        ALAssetRepresentation representation = asset.DefaultRepresentation;
        if (representation!= null)
        {
            string fileName = representation.Filename;
            var mimeType = MimeTypes.GetMimeType(fileName);
    
        }
    
    }, delegate (NSError error) {
        Console.WriteLine("User denied access to photo Library... {0}", error);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-27
      • 2019-01-28
      • 2011-10-22
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 2018-12-01
      相关资源
      最近更新 更多