Domanda

In C # lo sto facendo

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

Sembra reindirizzare il percorso come posso vedere le immagini sulle mie pagine. Tuttavia in Firefox quando faccio clic con il tasto destro del mouse e seleziono " visualizza immagine " ottengo un download. Usando questo codice c ++ posso vedere il mime come 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;
}

La mia domanda è: come posso impostare il mime sul tipo corretto? Sopra ho hardcode per png che non funziona. Tuttavia preferisco non codificare alcun mimo e farlo funzionare. Sono stato in grado di reindirizzare un file XML su somefile.aspx e fare in modo che la pagina impostasse il tipo di contenuto e generasse l'XML. Tuttavia, riscrivere il percorso dell'immagine sembra far funzionare l'immagine ma non riesco a ottenere il tipo corretto.

Come posso correggere il tipo di contenuto / mime? Come piano B riscriverò in un file aspx. Qual è il modo migliore per inviare un'immagine? Potrei fare qualcosa di simile a context.Response.OutputStream = stream (" nomefile "); ?

È stato utile?

Soluzione

Quando usi RewritePath , tutto ciò che hai scritto in testa viene scartato. Qualunque cosa stia gestendo il nuovo percorso, fornisce l'intestazione.

Se si desidera specificare il tipo di contenuto, non è possibile utilizzare RewritePath . Invece puoi usare Response.BinaryWrite o Response.WriteFile per generare i dati del file nel flusso di risposta dopo aver impostato l'intestazione.

Altri suggerimenti

Dai un'occhiata: Crea immagine PNG con servizio Web C # HttpHandler

Dovrebbe darti un esempio di come scaricare un PNG nella risposta.

application / octet-stream dirà al tuo browser che il file è binario e il tuo browser lo scaricherà.

Questo ha funzionato per me in passato (in un HttpHandler l'unico responsabile della pubblicazione dei file, quindi delle chiamate chiare):

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

Se vuoi scaricare il file, puoi anche aggiungere:

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

per suggerire un nome file al browser da salvare come.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top