Designed by NoKi !
4 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche


Acheter - Vendre
neuf et occasion

pda, jeux vidéo, graveur, cd vierges, dvd vierges, matériel informatique, pc, ordinateur portable, logiciel, antivirus, annonces gratuites

 NewsLetter





   

Télécharger des fichiers

ou les ouvrir avec une autre application





Didier
Lorsque l'on veut permettre le téléchargement d'un fichier .zip il suffit de faire un lien simple <A href="monfichier.zip"> Télécharger </A>, mais lorsqu'il s'agit d'un autre type, .txt par exemple, c'est une autre affaire... le navigateur l'ouvre et affiche son contenu... Alors comment faire pour le télécharger ou l'ouvrir avec MSWord ou MSExcel ? En précisant le "content-type" MIME dans l'en-tête de la page...


ASP - PHP - .NET - Questions - Démo


Les types MIME (Multi-purpose Internet Mail Extensions) sont une extension des types de données transportés par le protocole SMTP (Simple Mail Transfer Protocol) prévu à l'origine pour ne transférer que des fichiers textes mais qui, avec l'apparition du multimédia, a dû permettre l'échange de fichiers binaires (bureautique, images, sons, fichiers compressés).

Avec MIME, il est possible d'échanger des fichiers entre des machines quelconques (Unix, PC, MAC) : celle qui reçoit ces informations connait le type de fichier et peut l'associer à une application installée sur cette machine. Elle sera donc capable de présenter les données reçues de la façon la mieux adaptée :
  • vous recevez un son, la machine vous le joue ;
  • vous recevez une image, vous pouvez la visualiser ;
  • vous recevez un fichier HTML, vous pouvez le lire dans votre navigateur ;
  • vous recevez un fichier DOC, c'est MSWord qui l'ouvrira ;
  • etc...


Alors comment faire justement sur une page web pour tricher avec ce type MIME et décider que telle application doit ouvrir mon fichier d'extension quelconque ? En transmettant à l'en-tête de la page (Header), le "content-type" correspondant aux fichiers généralement ouverts par l'application que l'on veut lancer :)


Envie de tester la démo ?


Les scripts


download.asp 
<%
if request("dwn")<>"" then
   
   response.clear() ' Vide le buffer

   ' Dialogue de téléchargement
   response.contentType = "application/octet-stream"
   ' seulement pour application/octet-stream !
   response.addHeader "Content-Disposition","attachment; filename=" & request("dwn")

   ' Ouvrir avec MSWord
   ' response.contentType = "application/msword"
   ' Ouvrir avec MSExcel
   ' response.contentType = "application/vnd.ms-excel"
   ' Ouvrir en Text
   ' response.contentType = "text/plain"

   response.flush() ' Envoie le buffer

   ' Lecture du fichier
   set FSO = Server.CreateObject("Scripting.FileSystemObject")
   set inF = FSO.OpenTextFile(server.mapPath(request("dwn")),1,false)
   t = inF.readAll
   inf.close

   response.write(t) ' Envoie le contenu du fichier

else%>


   <A href="download.asp?dwn=download.asp">Test</A>

<%end if%>


download.php 
<?
if($_GET["dwn"]) {
   
   // ob_clean(); // Vide le buffer (v >= 4.2)

   // Dialogue de téléchargement
   header("content-type: application/octet-stream");
   // seulement pour application/octet-stream !
   header("Content-Disposition: attachment; filename=".$_GET["dwn"]);

   // Ouvrir avec MSWord
   // header("content-type: application/msword");
   // Ouvrir avec MSExcel
   // header("content-type: application/vnd.ms-excel");
   // Ouvrir en Text
   // header("content-type: text/plain");

   // voir aussi http://dev.nexen.net/scripts/details.php?scripts=354

   flush(); // Envoie le buffer

   readfile($_GET["dwn"]); // Envoie le fichier

} else { ?>


   <A href="download.php?dwn=download.php">Test</A>

<? } ?>


download.aspx 
<%@ import namespace="System.IO" %>

<script language="vb" runat="server">

   Sub Page_Load(source As Object, e As EventArgs)

      Dim dir As String = Request.MapPath(".")
      Dim f As String = Request.QueryString("dwn")

      If f <> "" then

         Response.Clear() ' Vide le buffer

         ' Dialogue de téléchargement
         Response.ContentType="application/octet-stream"
         ' seulement pour application/octet-stream !
         Response.AddHeader("Content-Disposition","attachment; filename=" & f)

         ' Je n'ai pas encore réussi à le faire fonctionner avec d'autres types
         ' Si quelqu'un trouve comment...

         ' Ouvrir avec MSWord
         ' Response.ContentType = "application/msword"
         ' Ouvrir avec MSExcel
         ' Response.ContentType = "application/vnd.ms-excel"
         ' Ouvrir en Text
         ' Response.ContentType = "text/plain"

         Response.Flush() ' Envoie le buffer

         Response.WriteFile(dir & "\" & f) ' Envoie le contenu du fichier

      Else

         Response.write("<A href=""download.aspx?dwn=download.aspx"">Test</A>")

      End If

   End Sub

</script>


A lire aussi

  • Compter le nombre de téléchargements
  • Récapitulatif des types MIME les plus rencontrés
  • Liste des types MIME officiels ou reconnus
  • How to Protect Your Images from Bandwidth Thieves

  • Pour pouvoir écrire dans ce forum, identifiez-vous !

     Lire  10/09/2007 de boukadida
    j'aimerais bien plutot afficher le contenu du documen...
     Lire  19/07/2007 de touhami
    bonjour mes ami(e)s je veux un script de gestion des ...
     Lire  18/05/2007 de laad
    bonjour je suis tres interessé par le script de telec...
      v1.3p © ASP-PHP.net 2002  

    Didier le 30/12/2002 (167 856 hits)
    Didier Téléchargez gratuitement !!!
    7 logiciels illimités dont Visual Studio Pro et SQL Server 2005 !
    SQL Server 2008 ß !
    [gratuit] 11-12-13 février
    les MS TechDays 2008 !!!
    Au fil des news  
    Dreamweaver CS3 + XML + Ajax - Création d'une région détail
    Dans cet article, je vais vous montrer comment utiliser la technique région détail, avec Spry
    PHP - joli arborescence dynamique
    Magazines - Le N°104 de Programmez est disponible
    PHP - PhPBB 3.0.0 !!!
    [MAJ] Université de Sherbrooke - située dans un beau coin du Québec, l'Estrie...
    - Ajout du programme d'imagerie et de médias numérique - Le département de mathématiques et ...
    Magazines - Le N°103 de Programmez est disponible
    PHP - Calcul jours ouvrables entre dates, gestion fériés
    PHP - WampServer 2.0, la nouvelle version de WAMP5 !
    SharePoint 2007 et Workflows Designer - Part 2 - Modifions un workflow dans SharePoint 2007
    Dans la première partie, nous avons vu comment créer un WorkFlow dans MOSS avec SharePoint ...
    Modifier le ruban de Word 2007 avec Open XML -
    Open XML est un format de document bureautique flexible : structure basée sur l'Open Packaging ...
    La corbeille de SharePoint 2007 - Fonctionnement de la corbeille de SharePoint 2007
    Une des nouveautés de SharePoint 2007 est la mise en place de la corbeille pour chaque site. Il est ...
    SharePoint 2007 et Workflows Designer - Part 1 - Créer un workflow simple dans SharePoint 2007
    L'automatisation de Workflows, ou Flux de travail, résulte d'une volonté d'amélioration de ...
    CSS - Dégradé de couleur
    Magazines - Le N°102 de Programmez est disponible
    Dreamweaver CS3 + Mysql - Formulaire de redirection
    Suite au coup de pouce de DB77, je vous propose ce petit script pour améliorer vos pages Internet. ...
    [MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
    Mis à jour le 26/10/2007
    Magazines - Le Hors-Série .Net de Programmez est disponible
    LINQ et vous - Part 2 - Le .NET Framework 3.5 décortiqué !
    Ce nouvel article fait suite à mon premier article de cette nouvelle collection « LINQ et vous ». ...
    Présentation des KPI dans SharePoint - Présentation des KPI dans SharePoint 2007
    Nous verrons au travers de cet article une présentation détaillée de ce qu'est un KPI et dans quel ...
    LINQ et vous - Part 1 - Evolutions du .NET Framework - Visual Studio 2008
    Voilà plus d'un an que je n'ai plus posté d'articles sur ma communauté préférée. Il était temps ...
    Agenda - 21-22 novembre : Le Forum PHP 2007 !
    Microsoft - Essayez gratuitement MS Expression Studio !!!
    Les Utilisateurs dans SharePoint - La gestion des utilisateurs dans SharePoint
    SharePoint dont le coeur est l'outil collaboratif, Windows SharePoint Services. Chaque utilisateur ...
    Magazines - Le N°101 de Programmez est disponible
    Hebergement - hébergement de forum gratuit - créer un forum.
    Revue de presse - Nouvelle mise à jour chez Adobe
    PHP - import csv vers bdd avec verification
    PHP5 - Csv2array
    PHP - Framework PHP5 - PoppyFramework
    Le Moteur de Recherche de MOSS 2007 - Installer le moteur de recherche de MOSS 2007
    Nous avons vu dans un précédent article comment mettre en place le moteur de recherche dans un site ...
    PHP5 - incrementation alphanumerique
    Magazines - Le N°100 de Programmez est disponible
    Agenda - Adobe vous donne rendez-vous du 4 au 9 septembre..
    ABAP leçon 1 : Les variables - Auteur : Jerome Fortias
    je me devais de continuer mon travail de vulgarisation à SAP. En parallèle à mon site destiné aux ...
    Agenda - Nov 2007 : Les TechEd Developers à Barcelone !
    Microsoft - Vista SP1 et XP SP3 pour bientôt !
    Le Moteur de Recherche de WSS V3 - Installer le moteur de recherche de WSS V3
    Parmi les évolutions de Windows SharePoint Services V3, on trouve le moteur de recherche. Nous ...
    PHP - array2xml convertie un array en xml
    Revue de presse - Flash Player 9 Update beta
    PHP5 - class Timer - ajouter/enlever du temp au time unix
    Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
    Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
      Scripts : Scripting | ASP-PHP | ASP.net | Divers
      Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
    v3 © Didier 2003   
     
     CodePPC Codes Sources Wygwam DotNet Project The Inquirer FR ASP-magazine MVP TechNet El Roubio Groupes Utilisateurs Microsoft