Чтение файла из UNC-пути и установка правильного типа MIME в HTTP-запросе - PullRequest
1 голос
/ 15 октября 2010

Как бы я прочитал файл из пути UNC, обнаружил правильный тип MIME и отправил его в браузер?

Мне кажется, что я заново изобретаю IIS, и мне также придется поддерживать собственную базу данных MIME-типов для каждого расширения файла. Вышеуказанный запрос звучит разумно, или есть лучший способ?

Я планирую потоковую передачу через браузер HTTP-запрос Get на IIS7. Если это имеет значение, я также использую Cognos на том же сервере. Все рамки в порядке (WCF, ASPX и т. Д.)

1 Ответ

1 голос
/ 15 октября 2010

Использование WCF довольно просто: этот код может быть размещен в IIS / Service / WAS / и т. Д.
Я никогда не находил удобный способ обработки типа 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)
    }
}
...