39 lines
1.1 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|