Magazine Internet

[ASP] Trimer avec des Streams

Publié le 19 février 2009 par Jeremy.jeanson

Bien souvent on se trouve amené à utiliser l’ami Response pour lui faire faire toutes sortes d’opérations, dont l’écriture dans la fameuse OutputStream. Et c’est là que les négligences commencent :

1. On oublie de faire le ménage autour de soit :

Avant d’écrire dans la Stream il est préférable de penser à vider ce que Response contient : Response.Clear()
Après avoir utilisé la Stream il faut s’assurer que le travail d’écriture est fait et empêcher une écriture suivante :  Response.Flush() et Response.Close()

Avec ces simple pratiques vous êtes certain qu’il n’y aura pas d’écriture parasites autour de ce que vous avez inséré dans la Stream (exemple : pas de balise HTML, BODY ou autre joyeuseté propre à une page).

2. Formalisé clairement ce que l’on va restituer au navigateur:

Si on écrit un fichier (csv, txt, jpg… etc …) dans la stream, c’est pour que le navigateur le récupère et surtout que notre IIS le laisse passer. Et oui si vous souhaitez écrire dans la Stream un type MIME que IIS interdit, cela ne marchera pas!

Par exemple pour sortir un fichier .csv :

Response.ContentType = "application/octet-stream";

Response.AddHeader(
	"Content-Disposition",
    "attachment; filename=MonNomDeFichier.csv");

3. Penser Stream, vivre Stream, être une Stream! :

On pourrait croire que je deviens fous, mais non. On vois encore trop souvent des développeur qui disent qu’il est impératifs d’écrire un fichier sur le disque du serveur pour permettre de la télécharger, ou bien encore que même avec le Reponse.OutputStream il y a des traitements qui doivent impérativement être réalisé sur le disque.

Et là c’'est le drame :

  • Besoin d’accès au disque.
  • Soucis de droits d’accès aux fichiers (voir accès autorisés à tout le monde pour un fichier de données critiques!).
  • Fichiers parfois oubliés sur le disque (si si ça arrive tout le temps).
  • Mise en place de service de nettoyages des répertoires.

Mais il est impossible de faire autrement!

Et bien, c’est faut! Tout cela est faut car on disposera toujours de la MemoryStream –> une Stream qui n’existe qu’en mémoire. Donc on ne se prive pas on va devoir trimer avec des Stream … “poésie quand tu nous tiens ;)”


Retour à La Une de Logo Paperblog

A propos de l’auteur


Jeremy.jeanson 1573 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossier Paperblog