Je vyžadována podpora jazyka JavaScript
Některé stránky na tomto webu vyžadují podporu jazyka JavaScript. Váš webový prohlížeč jazyk JavaScript nepodporuje nebo jazyk JavaScript není povolen.
Chcete-li zjistit, zda webový prohlížeč podporuje jazyk JavaScript nebo jazyk JavaScript chcete povolit, přečtěte si nápovědu k vašemu webovému prohlížeči.
DownloadHandler.cs
Download fileToto je zdrojový kód souboru DownloadHandler.cs
ASP.NET IHttpHandler for downloading files.
using System; using System.Web; using System.Web.Routing; using Microsoft.IdentityModel.Claims; namespace FileAccessWeb { public class DownloadHandler : IHttpHandler { #region action methods /// <summary> /// Enables processing of HTTP Web requests by a custom HttpHandler that implements the System.Web.IHttpHandler interface. /// </summary> /// <param name="context">An System.Web.HttpContext object</param> public void ProcessRequest(HttpContext context) { context.Response.AddHeader("cache-control", "must-revalidate"); if (!context.User.Identity.IsAuthenticated) { context.Response.StatusCode = 403; context.Response.StatusDescription = "Forbidden"; return; } var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context)); string file = (string)routeData.Values["name"]; if (string.IsNullOrWhiteSpace(file)) { context.Response.StatusCode = 400; context.Response.StatusDescription = "Bad Request"; return; } var claimsIdentity = (IClaimsIdentity)context.User.Identity; string katedra = claimsIdentity.Name; string directory = context.Server.MapPath("~/App_Data/" + katedra); string fileName = System.IO.Path.Combine(directory, file); if (!System.IO.File.Exists(fileName)) { context.Response.StatusCode = 404; context.Response.StatusDescription = "Not Found"; return; } bool isAttachment; string contentType = GetContentType(new System.IO.FileInfo(fileName).Extension, out isAttachment); context.Response.AppendHeader("content-disposition", string.Format("{0}filename={1}", isAttachment ? "attachment;" : "", EncodeFileNameForMimeHeader(file))); context.Response.ContentType = contentType; try { context.Response.WriteFile(fileName); } finally { context.Response.Flush(); } } /// <summary> /// Gets a value indicating whether another request can use the System.Web.IHttpHandler instance. /// </summary> public bool IsReusable { get { return true; } } #endregion #region private member functions private static string EncodeFileNameForMimeHeader(string fileName) { var builder = new System.Text.StringBuilder(fileName.Length); foreach (char ch in fileName) { int num = Convert.ToInt32(ch); if ((((num >= 0x41) && (num <= 90)) || ((num >= 0x61) && (num <= 0x7a))) || (((num >= 0x30) && (num <= 0x39)) || ((num == 0x20) || (num == 0x2e)))) { builder.Append(ch); } else { char[] chars = new char[] { ch }; foreach (byte num2 in System.Text.Encoding.UTF8.GetBytes(chars)) { builder.Append("%"); builder.Append(num2.ToString("X", System.Globalization.CultureInfo.InvariantCulture)); } } } return builder.ToString(); } private static string GetContentType(string Extension, out bool isAttachment) { isAttachment = true; switch (Extension.ToLowerInvariant()) { case ".jpg": case ".jpeg": isAttachment = false; return "image/jpeg"; case ".png": isAttachment = false; return "image/png"; case ".gif": isAttachment = false; return "image/gif"; case ".bmp": isAttachment = false; return "image/bmp"; case ".txt": isAttachment = false; return "text/plain"; case ".htm": case ".html": isAttachment = false; return "text/html"; case ".css": isAttachment = false; return "text/css"; case ".xml": return "text/xml"; case ".doc": case ".dot": return "application/msword"; case ".docx": return "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; case ".dotx": return "application/vnd.openxmlformats-officedocument.wordprocessingml.template"; case ".xls": case ".xlt": return "application/vnd.ms-excel"; case ".xlsx": return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; case ".xltx": return "application/vnd.openxmlformats-officedocument.spreadsheetml.template"; case ".ppt": return "application/vnd.ms-powerpoint"; case ".pptx": return "application/vnd.openxmlformats-officedocument.presentationml.presentation"; case ".pdf": return "application/pdf"; case ".zip": return "application/x-zip-compressed"; case ".gz": return "application/x-gzip"; case ".z": return "application/x-compress"; case ".rar": case ".arj": return "application/x-compressed"; case ".ics": return "text/v-calendar"; } return "application/octet-stream "; } #endregion } }