public override async Task ExecuteAsync(HttpContext context) { var fullpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FilePath.TrimStart('/', '\\')); if (File.Exists(fullpath)) { var response = context.Response; var filename = Path.GetFileName(fullpath); var ext = Path.GetExtension(fullpath); response.StatusCode = 200; response.ContentType = Mime.Get(ext.ToLower()) ?? "application/octet-stream"; response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename)); var buffer = new byte[4096]; int readBytes = 0; using (var fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read, FileShare.Read)) { response.AddHeader("Content-Length", fs.Length.ToString()); while ((readBytes = await fs.ReadAsync(buffer, 0, 4096)) > 0) { await response.WriteAsync(buffer); } } } else { await(new Http404NotFoundResult()).ExecuteAsync(context); } }
public void MimeTypeTest2() { IMime mime = new Mime(); var mimeType = mime.Get("3dml"); Assert.AreEqual(mimeType, "text/vnd.in3d.3dml"); }
internal static void Main(string[] args) { //Using static method get mime Type From the Resources var name = Mime.GetMimeType("ami"); Console.WriteLine("ami = " + name); IMime mimeType = new Mime(); var mimeType1 = mimeType.Get("3dml"); Console.WriteLine("3dml = " + mimeType1); var mimeType2 = mimeType["z3"]; Console.WriteLine("z3 = " + mimeType2); }
public override async Task ExecuteAsync(HttpContext context) { var fullpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FilePath.TrimStart('/', '\\')); var response = context.Response; var request = context.Request; if (File.Exists(fullpath)) { if (request.Header["If-Modified-Since"] != null) { DateTime time; if (DateTime.TryParse(request.Header["If-Modified-Since"], out time)) { if (time.Ticks >= File.GetLastWriteTimeUtc(fullpath).Ticks) { response.StatusCode = 304; await response.WriteAsync(string.Empty); return; } } } var ext = Path.GetExtension(fullpath); response.StatusCode = 200; response.ContentType = Mime.Get(ext) ?? "application/octet-stream"; response.AddHeader("Last-Modified", File.GetLastWriteTime(fullpath).ToUniversalTime().ToString("r")); var buffer = new byte[4096]; int readBytes = 0; using (var fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read, FileShare.Read)) { response.AddHeader("Content-Length", fs.Length.ToString()); while ((readBytes = await fs.ReadAsync(buffer, 0, 4096)) > 0) { await response.WriteAsync(buffer); } } } else { await(new Http404NotFoundResult()).ExecuteAsync(context); } }
public void Text() { Mime.Get("../../App_Data/Text.txt").ShouldNotBe(ApplicationOctetStream); Mime.Get("../../App_Data/Text.txt").ShouldBe("application/text"); }
public void Pdf() { Mime.Get("../../App_Data/example_pdf.pdf").ShouldNotBe(ApplicationOctetStream); Mime.Get("../../App_Data/example_pdf.pdf").ShouldBe("application/text"); }
public void Excel_RealWorld() { Mime.Get("../../App_Data/example_excel.xlsx").ShouldNotBe(ApplicationOctetStream); Mime.Get("../../App_Data/example_excel.xlsx").ShouldBe("application/text"); }
public void Excel_New() { Mime.Get("../../App_Data/test_excel.xlsx").ShouldNotBe(ApplicationOctetStream); Mime.Get("../../App_Data/test_excel.xlsx").ShouldBe("application/text"); }