繁体   English   中英

如何从数组结构中获取MIME名称

[英]How to get mime name from array struct

我有MimeVideo结构,并在列表中使用它来存储mime视频文件。 我想要做的是通过Ext获取mimefile name的值,以将其存储在MediaTypeHeaderValue 怎么做?

struct MimeVideo
{
    private readonly string _ext;
    private readonly string _file;
    public MimeVideo(string ext, string file)
    {
        this._ext = ext;
        this._file = file;
    }
    public string Ext { get { return _ext; } }
    public string File { get { return _file; } }

}
static readonly IList<MimeVideo> MimeNames = new ReadOnlyCollection<MimeVideo>
(new[] {
     new MimeVideo (".mp4", "video/mp4"),
     new MimeVideo (".ogg", "application/ogg"),
     new MimeVideo (".ogv", "video/ogg"),
     new MimeVideo (".webm", "video/webm")
});

private static MediaTypeHeaderValue GetMimeNameFromExt(string ext)
{
    string name ;
     get the name of file using ext 
    if (MimeNames // get filename by using ext)
        return new MediaTypeHeaderValue(name );
    else
        return new MediaTypeHeaderValue(MediaTypeNames.Application.Octet);
}

您可以使用Enumerable.FirstOrDefault

private static MediaTypeHeaderValue GetMimeNameFromExt(string ext)
{
   MimeVideo first = MimeNames
      .FirstOrDefault(m => m.Ext.Equals(ext, StringComparison.InvariantCultureIgnoreCase));
   if(first == null) 
       return new MediaTypeHeaderValue(MediaTypeNames.Application.Octet);
   else
       return new MediaTypeHeaderValue(first.File);
}

Where + DefaultIfEmpty

private static MediaTypeHeaderValue GetMimeNameFromExt(string ext)
{
    return MimeNames
        .Where(m => m.Ext.Equals(ext, StringComparison.InvariantCultureIgnoreCase))
        .Select(m => new MediaTypeHeaderValue(m.File))
        .DefaultIfEmpty(new MediaTypeHeaderValue(MediaTypeNames.Application.Octet))
        .First();
}

您尚未显示如何获取扩展名,我建议使用usig System.IO.Path.GetExtension 我还将使用Dictionary<string, MimeVideo>代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM