sharp-application-server/resources/FileResource.cs

39 lines
1.1 KiB
C#

using System;
using appsrv.server;
using System.IO;
using System.Collections.Generic;
using appsrv.exceptions;
using appsrv.mime;
namespace appsrv.resources
{
public class FileResource : Resource
{
public FileInfo FileInfo { get; }
public bool DiscardRequestPath { get; set; }
public FileResource(FileInfo fileInfo,Resource container)
:base(fileInfo.Name,container)
{
FileInfo = fileInfo;
}
public override void Hit(Stack<string> requestPath, HttpRequest request)
{
if ((requestPath.Count > 0) && !DiscardRequestPath){
throw new ApplicationServerException(String.Format("No resources below {0}",Path));
} else {
request.SetResponseHeader("Content-Type", MimeHelper.GuessMIMEFromFilename(FileInfo.Name));
using (FileStream fileStream = new FileStream(FileInfo.FullName,FileMode.Open))
{
fileStream.CopyTo(request.ResponseStream);
fileStream.Close();
}
}
}
}
}