2009-06-22 7 views
0

En C# je faisContentType travail ne marche pas, mime = application/octet-stream

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

Il semble rediriger le chemin que je peux voir voir des images sur mes pages. Cependant, dans Firefox quand je fais un clic droit et sélectionnez "Voir l'image" je reçois un téléchargement. En utilisant ce code C++ je peux voir l'application étant mime/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; 
} 

Ma question est de savoir comment puis-je configurer le mime du type correct? Ci-dessus je hardcode il à png qui ne fonctionne pas. Cependant je préfère ne pas coder un mime et le faire fonctionner. J'ai été en mesure de rediriger un fichier XML vers somefile.aspx et que la page définisse le type de contenu et génère le XML. Cependant réécrire sur le chemin de l'image semble laisser l'image fonctionne, je ne comprends pas le bon type.

Comment corriger le type de contenu/mime? Comme plan B je vais réécrire dans un fichier ASPX. Quel est le meilleur moyen d'envoyer une image? Pourrais-je faire quelque chose comme context.Response.OutputStream = stream ("nomfichier"); ?

Répondre

2

Lorsque vous utilisez RewritePath, tout ce que vous avez écrit dans la tête est ignoré. Tout ce qui gère le nouveau chemin est de fournir l'en-tête.

Si vous souhaitez spécifier le type de contenu, vous ne pouvez pas utiliser RewritePath. Au lieu de cela, vous pouvez utiliser Response.BinaryWrite ou Response.WriteFile pour afficher les données du fichier dans le flux de réponses après avoir défini l'en-tête.

0

application/octet-stream indique à votre navigateur que le fichier est binaire et que votre navigateur le télécharge ensuite.

Cela a fonctionné pour moi dans le passé (dans un HttpHandler seul responsable de service de fichiers, d'où les appels clairs):

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

Si vous voulez télécharger le fichier, vous pouvez également ajouter :

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

pour suggérer un nom de fichier du navigateur pour économiser.

Questions connexes