2009-01-08 8 views
0

Pardonnez la question de débutant bête ici; la programmation web n'est pas mon fort ... (blush)Comment envoyer un blob binaire à un navigateur client?

J'ai une page aspx fonctionnant sur un serveur web. J'ai un blob (tableau d'octets) contenant n'importe quel type de fichier binaire, plus un nom de fichier.

Je voudrais pousser ce fichier à télécharger via le navigateur sur le client, et ouvert en utilisant n'importe quelle application est par défaut pour ce type de fichier. Je ne veux vraiment pas enregistrer le blob sous forme de fichier sur le serveur; Cela laissera un désordre terrible d'entretien ménager que je ne veux juste pas penser.

J'ai essayé de googler cette question, mais je suppose que j'utilise les mauvais mots-clés.

Cela devrait vraiment être évident comment le faire, mais je n'ai pas de joie.

Quel est le truc?

Merci!

Répondre

10
Response.BinaryWrite(byteArray); 

Vous devez également définir le type de contenu

Response.ContentType = "application/pdf"; 

Mais ce sera en fonction de votre type de fichier.

Et le nom du fichier (et tout ensemble) est fait comme

Response.AddHeader("content-disposition", 
    String.Format("attachment;filename={0}", fileName));  
Response.ContentType = "application/pdf"; 
Response.BinaryWrite(byteArray); 
+0

Je voudrais ajouter que certains navigateurs (* toux * IE * toux) ignorent souvent le nom de fichier. –

+0

Ohh ouais, j'ai déjà participé à ça. Un truc qui fonctionne aussi parfois est d'ajouter le nom du fichier à la fin de la chaîne de requête. – Bob

+0

Merci Bob pour votre réponse rapide, succincte et précise! –

3

D'abord, vous devez connaître le type MIME. Une fois que vous le savez, vous pouvez définir la propriété Response.ContentType. Après cela, utilisez simplement Response.BinaryWrite(). Si vous ne définissez pas d'abord la propriété ContentType, le client n'aura presque aucune chance d'ouvrir le fichier correctement.

Questions connexes