Exibindo conteúdo do anúncio de Respose.WriteFile () / Response.ContentType

votos
13

Como seria de exibir qualquer conteúdo add partir de uma página aspx dinâmico? Atualmente estou trabalhando sobre o uso do System.Web.HttpResponse Page.Response para escrever um arquivo que é armazenado em um servidor web para um pedido web.

Isso permitiria que as pessoas a bater um url para o tipo http://www.foo.com?Image=test.jpg e ter a visualização da imagem em seu navegador. Então, como você pode saber isso gira em torno do uso de Response.ContentType.

usando

Response.ContentType = application/octet-stream;

Eu sou capaz de exibir imagens do tipo gif / jpeg / png (tudo que eu testei até agora), pouco tentando mostrar .swf ou .ico me dá um pouco de erro agradável.

utilização

Response.ContentType = application/x-shockwave-flash;

Posso obter arquivos flash para jogar, mas, em seguida, as imagens são confuso.

Então, como eu facilmente escolher o tipo de conteúdo?

Publicado 06/08/2008 em 10:52
fonte usuário
Em outras línguas...                            


4 respostas

votos
8

Isso é feio, mas a melhor maneira é olhar para o arquivo e definir o tipo de conteúdo de forma apropriada:

switch ( fileExtension )
{
    case "pdf": Response.ContentType = "application/pdf"; break; 
    case "swf": Response.ContentType = "application/x-shockwave-flash"; break; 

    case "gif": Response.ContentType = "image/gif"; break; 
    case "jpeg": Response.ContentType = "image/jpg"; break; 
    case "jpg": Response.ContentType = "image/jpg"; break; 
    case "png": Response.ContentType = "image/png"; break; 

    case "mp4": Response.ContentType = "video/mp4"; break; 
    case "mpeg": Response.ContentType = "video/mpeg"; break; 
    case "mov": Response.ContentType = "video/quicktime"; break; 
    case "wmv":
    case "avi": Response.ContentType = "video/x-ms-wmv"; break; 

    //and so on          

    default: Response.ContentType = "application/octet-stream"; break; 
}
Respondeu 18/08/2008 em 13:10
fonte usuário

votos
0

Desde .Net 4.5 pode-se usar

MimeMapping.GetMimeMapping

Ele retorna o mapeamento MIME para o nome de arquivo especificado.

https://msdn.microsoft.com/en-us/library/system.web.mimemapping.getmimemapping(v=vs.110).aspx

Respondeu 25/09/2017 em 19:47
fonte usuário

votos
0

Yup Keith feio, mas é verdade. Eu acabei colocando os tipos MIME que usaríamos em um banco de dados e, em seguida, retirá-los quando eu estava publicando um arquivo. Eu ainda não posso acreditar que não existe uma lista autoritive de tipos lá fora ou que não há nenhuma menção de que está disponível na MSDN.

Eu encontrei este site que forneceu alguma ajuda.

Respondeu 20/08/2008 em 06:42
fonte usuário

votos
0

Esta é parte de uma solução que eu uso em uma intranet local. Algumas das variáveis ​​que você terá que recolher-se como eu puxá-los a partir de um banco de dados, mas você pode trazê-los de algum outro lugar.

O único extra, mas eu tenho lá é uma função chamada getMimeType que se conecta ao banco de dados e puxa para trás o tipo de mina correto com base na extensão do arquivo. O padrão é application / octet-stream se nenhum for encontrado.

// Clear the response buffer incase there is anything already in it.
Response.Clear();
Response.Buffer = true;

// Read the original file from disk
FileStream myFileStream = new FileStream(sPath, FileMode.Open);
long FileSize = myFileStream.Length;
byte[] Buffer = new byte[(int)FileSize];
myFileStream.Read(Buffer, 0, (int)FileSize);
myFileStream.Close();

// Tell the browse stuff about the file
Response.AddHeader("Content-Length", FileSize.ToString());
Response.AddHeader("Content-Disposition", "inline; filename=" + sFilename.Replace(" ","_"));
Response.ContentType = getMimeType(sExtention, oConnection);

// Send the data to the browser
Response.BinaryWrite(Buffer);
Response.End();
Respondeu 06/08/2008 em 10:59
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more