public static GetMimeType ( string fileNameOrExt ) : string | ||
fileNameOrExt | string | |
return | string |
public static string GetMimeType(string fileNameOrExt)
{
if (string.IsNullOrEmpty(fileNameOrExt))
throw new ArgumentNullException("fileNameOrExt");
var parts = fileNameOrExt.Split('.');
var fileExt = parts[parts.Length - 1];
string mimeType;
if (ExtensionMimeTypes.TryGetValue(fileExt, out mimeType))
{
return mimeType;
}
switch (fileExt)
{
case "jpeg":
case "gif":
case "png":
case "tiff":
case "bmp":
case "webp":
return "image/" + fileExt;
case "jpg":
return "image/jpeg";
case "tif":
return "image/tiff";
case "svg":
return "image/svg+xml";
case "htm":
case "html":
case "shtml":
return "text/html";
case "js":
return "text/javascript";
case "csv":
case "css":
case "sgml":
return "text/" + fileExt;
case "txt":
return "text/plain";
case "wav":
return "audio/wav";
case "mp3":
return "audio/mpeg3";
case "mid":
return "audio/midi";
case "qt":
case "mov":
return "video/quicktime";
case "mpg":
return "video/mpeg";
case "avi":
case "mp4":
case "ogg":
case "webm":
return "video/" + fileExt;
case "rtf":
return "application/" + fileExt;
case "xls":
return "application/x-excel";
case "doc":
return "application/msword";
case "ppt":
return "application/powerpoint";
case "gz":
case "tgz":
return "application/x-compressed";
case "eot":
return "application/vnd.ms-fontobject";
case "ttf":
return "application/octet-stream";
case "woff":
return "application/font-woff";
default:
return "application/" + fileExt;
}
}
}
private async Task <object> GetPlaylistAsync(VideoStreamRequest request, string name) { var state = await GetState(request, CancellationToken.None).ConfigureAwait(false); var builder = new StringBuilder(); builder.AppendLine("#EXTM3U"); builder.AppendLine("#EXT-X-VERSION:3"); builder.AppendLine("#EXT-X-TARGETDURATION:" + state.SegmentLength.ToString(UsCulture)); builder.AppendLine("#EXT-X-MEDIA-SEQUENCE:0"); var queryStringIndex = Request.RawUrl.IndexOf('?'); var queryString = queryStringIndex == -1 ? string.Empty : Request.RawUrl.Substring(queryStringIndex); var seconds = TimeSpan.FromTicks(state.RunTimeTicks ?? 0).TotalSeconds; var index = 0; while (seconds > 0) { var length = seconds >= state.SegmentLength ? state.SegmentLength : seconds; builder.AppendLine("#EXTINF:" + length.ToString(UsCulture)); builder.AppendLine(string.Format("hlsdynamic/{0}/{1}.ts{2}", name, index.ToString(UsCulture), queryString)); seconds -= state.SegmentLength; index++; } builder.AppendLine("#EXT-X-ENDLIST"); var playlistText = builder.ToString(); return(ResultFactory.GetResult(playlistText, MimeTypes.GetMimeType("playlist.m3u8"), new Dictionary <string, string>())); }