Xamarin File Mime Тип - PullRequest
       5

Xamarin File Mime Тип

0 голосов
/ 25 сентября 2018

В настоящее время я разрабатываю кроссплатформенное приложение Xamarin (iOS / Android), которое загружает файл через CrossDownloadManager и распаковывает архив с помощью SharpZipLib.Portable.

Все работает нормально, но я хочу проверить тип mime загружаемого файла, прежде чем отправлять его в библиотеку распаковки, чтобы избежать каких-либо проблем.Я не могу использовать расширение файла, потому что не требуется.

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

* Используйте пакет MimeTypes Nuget: https://www.nuget.org/packages/MimeTypes/

Вам просто нужно передать имя файла, чтобы получить его тип содержимого:

var mimeType = MimeTypes.GetMimeType(fileName);

Вот так я получаю тип mimeизображение, выбранное с помощью метода FinishedPickingMedia средства выбора изображений в Xamarin.iOS [C #]

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);
});
0 голосов
/ 16 ноября 2018

Согласно ответу Curiousity , вот как вы это делаете:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...