You can add additional logic such as download count or access restriction.
First things first, you'll need to setup your HttpHandler, I've called mine GetFile.cs:
namespace Sample.HttpHandlers { public class GetFile : IHttpHandler { public bool IsReusable { get { return false; } } public void ProcessRequest(HttpContext context) { // The logic goes here } } }Remember to add the handler in your web.config, additional information can be found at microsoft support.
<add name="GetFile" verb="*" path="GetFile.axd" type="Sample.HttpHandlers.GetFile"/>
I've created a very simple table to store the file information:
key (uniqueidentifier) - In this case a guid
path (string) - This is the path to the file
Insert this logic into the ProcessRequest:
// Parse the query name "key" to a guid Guid fileKey; if (Guid.TryParse(context.Request.QueryString["key"], out fileKey)) { // Find the row corresponding with the guid from the database FileItem fileItem = new FileService().LoadFiles.FirstOrDefault(x => x.FileKey == fileKey); if (fileItem != null) { // TODO: Add additional logic here, such as download count or access restriction // Adds a root directory to the path giving you the // ability to move the files without renaming all the path's in the database string filePath = string.Format("{0}{1}", @"D:\Files", fileItem.Path); if (File.Exists(filePath)) { // Clears the buffer context.Response.ClearContent(); context.Response.ClearHeaders(); // The header will tell the browser that the file is an attachment, // this will prompt to download instead of displaying the file in the browser context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileItem.Name); // Extracting the ContentType from the file extention // using the MimeMapping method which has been made public in FW 4.5 context.Response.ContentType = MimeMapping.GetMimeMapping(fileItem.Name); context.Response.BufferOutput = false; // Transmits the file context.Response.TransmitFile(filePath); context.Response.End(); } else context.Response.Write("The file do not exist in the directory"); } else context.Response.Write("The file do not exist in the database"); } else context.Response.Write("Missing key");
To retrieve a file you need to call: /GetFile.axd?key=[your identifier] within your application
Additional information on the MimeMapping introduced in FW 4.5 can be found msdn and msdn blogpost.
If your on an earlier version than 4.5 I can suggest using this method:
private string GetContentType(string fileName) { string contentType = "application/octetstream"; string ext = System.IO.Path.GetExtension(fileName).ToLower(); Microsoft.Win32.RegistryKey registryKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext); if (registryKey != null && registryKey.GetValue("Content Type") != null) contentType = registryKey.GetValue("Content Type").ToString(); return contentType; }
đồng tâm
ReplyDeletegame mu
cho thuê nhà trọ
cho thuê phòng trọ
nhac san cuc manh
số điện thoại tư vấn pháp luật miễn phí
văn phòng luật
tổng đài tư vấn pháp luật
dịch vụ thành lập công ty trọn gói
lý thuyết trò chơi trong kinh tế học
đức phật và nàng audio
hồ sơ mật dinh độc lập audio
đừng hoang tưởng về biển lớn ebook
chiến thắng trò chơi cuộc sống ebook
bước nhảy lượng tử
ngồi khóc trên cây audio
truy tìm ký ức audio
mặt dày tâm đen audio
thế giới như tôi thấy ebook
Ngay khi Trương Thiên Sư đang lên đường thì….Một đội Cẩm Y Vệ bắt đầu hoàn toàn bị đồ sát.
Một đạo lãnh quan sắc bén xuất hiện tại thân thượng của một tên Cẩm Y Vệ phiên tử.
Một gã đi bên cạnh chỉ thấy trên mặt đột nhiên nóng lên, một tia máu tươi nóng hổi phun tới. Hắn chưa kịp đưa tay lau đi vết máu trên mặt, đã thấy mọi người bên cạnh mình ngã xuống chết. Trên ngực đều có một nhát kiếm.
Một kiếm mất mạng!
Phiên tử thủ lĩnh bất giác kinh hãi. Kiếm pháp như vậy thực sự bá đạo. Trong chớp mắt có thể sát hại hơn mười huynh đệ của hắn mà không gây ra một chút tiếng động.
Cảm nhận được sát khí từ phía sau truyền đến. Phiên tử thủ lĩnh quay đầu lại, đã thấy một thanh kiếm có hình dáng kỳ lạ đang chỉ vào mình.
Sử dụng quái kiếm này là một mông diện nữ tử( nữ tử che mặt). Mặc dù không nhìn thấy mặt của nàng nhưng gã phiên tử cũng đoán được đây hẳn phải là một tuyệt sắc nữ tử.
Phiên tử liếc mắt nhìn nàng một cái, tâm thần tự nhiên chấn động. Đây chính là cảm giác trước khi chết người ta thường gặp phải.
Nữ tử tóc dài phi tán trong gió đêm tung bay phấp phới. Con ngươi xinh đẹp lóe lên quang thiểm xinh đẹp nhưng lạnh lùng phảng phất như đến từ thế giới khác vậy.
“Là tiên tử hay ác ma?”
Ngay lúc này thì quái kiếm chợt rung lên.
Kiếm thế vung ra, phiên tử thủ lĩnh nhất thời cảm thấy áp lực đè nặng lên, trong phút chốc toàn thân hắn đã chìm trong kiếm quang của đối phương.
Nice article aws certification course
ReplyDeleteDesigned according to CCSP-ISC2 Certification Exam, IgmGuru’s CCSP Training Online is a god one to go for! This helps to make sure that the candidate passes the exam in the first attempt.
ReplyDeleteDesigned according to CCSP Certification Exam, IgmGuru’s CCSP Training Online is a god one to go for! This helps to make sure that the candidate passes the exam in the first attempt. Cloud security framework, applications, design, and functions are the few areas within what you will be gaining mastery in with the help of CCSP Course Online.
ReplyDeleteNice Post.RPA UiPath Training in Mumbai
ReplyDeleteDesigned according to CCSP-ISC2 Certification Exam, IgmGuru’s CCSP Training Online is a god one to go for! This helps to make sure that the candidate passes the exam in the first attempt. Cloud security framework, applications, design, and functions are the few areas within what you will be gaining mastery in with the help of ccsp online training. Gaining CCSP isc2 accreditation can be substituted for the whole CCSP encounter necessity.
ReplyDeleteNice comment Power BI Training in Pune
ReplyDeleteCloud security framework, applications, design, and functions are the few areas within what you will be gaining mastery in with the help of ccsp course online.
ReplyDeletevery nice uipath online training hyderabad
ReplyDeleteNice post.UiPath Training in pune
ReplyDeleteNice Article splunk training in hyderabad
ReplyDelete1. Coventry health insurance: It pays to look through your health insurance policy at least once a year or as often as you think changes have occurred in your health or that of your family member. Even if this does not lead to savings, it will ensure you always have adequate health insurance. more info
ReplyDeletePretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. parental control apps
ReplyDelete