In file IO, we need to set content/type while downloading it and this should be dynamically set by file's extension. Here is code we can use to do the same
Create static class to store all available mime-type, here am showing few only, we can add more.
Create static class to store all available mime-type, here am showing few only, we can add more.
public static class MimeTypesHelper
        {
            public const string
            Doc = "application/msword",
            Docx = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            Xls = "application/vnd.ms-excel",
            Xlt = "application/vnd.ms-excel",
            Xlsx = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            Ppt = "application/vnd.ms-powerpoint",
            Pptx = "application/vnd.openxmlformats-officedocument.presentationml.presentation",
            Pdf = "application/pdf",
            Zip = "application/zip";
            //get matched
mime type by extension, so property name should be equals to file extension
            public static string GetMimeTypeByExtension(string extension)
            {
                //remove
period in extension
                extension = extension?.Replace(".", "");
                //match
mimetype by property 
                string matchedMimeType = typeof(MimeTypes).GetField(extension, BindingFlags.IgnoreCase |
BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static)?.GetValue(null)?.ToString();
                //if
there is no match default to octet stream
                if (string.IsNullOrEmpty(matchedMimeType))
                {
                    matchedMimeType = "application/octet-stream";
                }
                return matchedMimeType;
            }
        }
Call this method to retrieve your file mimetype
 Response.ContentType = MimeTypesHelper.GetMimeTypeByExtension(".pdf");   //this will return "application/pdf"