Pergunta

Em C # eu estou fazendo

            context.Response.ContentType = "image/png";
            context.RewritePath(sz);
            context.Response.ContentType = "image/png";

Parece para redirecionar o caminho como eu posso ver as imagens ver em minhas páginas. No entanto no Firefox quando eu clique direito e selecione "imagem vista" i obter um download. Usando este ++ código c i pode ver o mime sendo application / octet-stream

#include <curl/curl.h> 
#include <ios>
#include <iostream>
#include <string>
#pragma comment(lib, "curllib")
using namespace std;
size_t function( void *ptr, size_t size, size_t nmemb, void *stream)
{
    cout << (char*)ptr;
    return size*nmemb;
}
size_t function2( void *ptr, size_t size, size_t nmemb, void *stream)
{
    return size*nmemb;
}
int main()
{
    CURL *c = curl_easy_init();
    curl_easy_setopt(c, CURLOPT_HEADERFUNCTION, function);
    curl_easy_setopt(c, CURLOPT_WRITEHEADER , 1);
    curl_easy_setopt(c, CURLOPT_WRITEFUNCTION, function2);
    curl_easy_setopt(c, CURLOPT_WRITEDATA, 0);
    curl_easy_setopt(c, CURLOPT_URL, "http://localhost:3288/s/main/4/AAA.png");
    curl_easy_perform(c);
    curl_easy_cleanup(c);
    return 0;
}

A minha pergunta é como faço para definir o mime para o tipo correto? Acima i codificá-lo para png que não funciona. No entanto eu prefiro não codificar qualquer mime e tê-lo trabalhar. Eu era capaz de redirecionar um arquivo XML para somefile.aspx e têm que a página definir o tipo de conteúdo e gerar o XML. No entanto reescrever para o caminho da imagem parece deixar o trabalho imagem eu apenas não obter o tipo correto.

Como faço para corrigir o tipo de conteúdo / MIME? Como plano B eu vou reescrever para um arquivo aspx. Qual é a melhor maneira de enviar uma imagem? eu poderia fazer algo como context.Response.OutputStream = fluxo ( "filename"); ?

Foi útil?

Solução

Quando você usa RewritePath, o que você tem escrito para a cabeça é descartado. O que quer que está a lidar com o novo caminho está fornecendo o cabeçalho.

Se você quiser especificar o tipo de conteúdo, você não pode usar RewritePath. Em vez disso você pode usar Response.BinaryWrite ou Response.WriteFile para a saída dos dados de arquivo para o fluxo de resposta depois de definir o cabeçalho.

Outras dicas

Confira: Criar uma imagem PNG com C # HttpHandler webservice

Deve dar-lhe um exemplo de dumping a PNG para a resposta.

application/octet-stream vai dizer ao seu navegador que o arquivo é binário e seu navegador irá então baixá-lo.

Este tem trabalhado para mim no passado (em um HttpHandler o único responsável por servir arquivos, portanto, as chamadas nítidas):

Response.Clear();
Response.ClearHeaders();
Response.ContentType = "image/png";
Response.AddHeader("Content-Type", image/png");

Se você deseja fazer o download do arquivo, você também pode adicionar:

Response.AddHeader("Content-Disposition", "attachment; filename=myimage.png");

para sugerir um nome de arquivo para o navegador para salvar como.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top