我如何从UNC路径读取文件,发现正确的MIME类型,并将其流式传输到浏览器?
我觉得我正在重新发明IIS,我还必须为每个文件扩展名维护自己的MIME类型数据库。上述请求听起来合理,还是有更好的方法?
我计划通过IIS7上的浏览器HTTP Get请求将其流式传输出去。如果重要,我也在同一台服务器上运行Cognos。任何框架都可以(WCF,ASPX等)
答案 0 :(得分:1)
使用WCF非常基本: 此代码可以在IIS / Service / WAS /等下托管 我从来没有找到一种方便的方法来处理mime类型,你需要拥有自己的数据库,将文件扩展名映射到mime类型。
[ServiceContract(SessionMode = SessionMode.NotAllowed)]
public interface IMediaRetriver
{
[OperationContract]
[WebGet(UriTemplate = "/get?f={fileName}")]
Stream Get(string fileName);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class MediaRetriver : IMediaRetriver
{
public Stream Get(string fileName)
{
// pro tips
// this will cause the file dialog to show the file name instead of "get"
WebOperationContext.Current.OutgoingResponse.Headers.Add(
"Content-disposition", string.Format("inline; filename={0}", fileName));
WebOperationContext.Current.OutgoingResponse.ContentType =
"application/octet-stream";
// you want to add sharing here also
return File.Open(fileName)
}
}