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


 Recherche

 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  19/01/2008 de wells
    j'ai beau essayer je n'arrive pas a fair fonctioner l...
  • 19/01/2008 de The_Legacy Bonjour, je pense que tu t'es u...
  •  Lire  10/09/2007 de boukadida
    j'aimerais bien plutot afficher le contenu du documen...
      v1.3p © ASP-PHP.net 2002  

    Didier le 30/12/2002 (177 984 hits)
    Didier 11 logiciels Microsoft GRATUITS dont Visual Studio 2008 Pro,
    SQL Server 2005, Expression Studio, Windows Server 2003, Office project Pro, etc... !!!
    Au fil des news  
    Magazines - Le n°108 de Programmez est disponible
    Adobe - Téléchargez gratuitement le dossier spécial Adobe
    Magazines - Le N°107 de Programmez est disponible.
    Créer une Feature d'administration sous SharePoint - Comment créer un composant d'administration
    Dans les précédents articles, nous avons évoqué la création de pages personnalisées dans ...
    PHP - Afficher une date : multilangage et relative
    Agenda - Inscrivez-vous au WygDay [Wygwam] le 22/5 à Lille
    Sync Framework - Introduction au MS Sync Framework - Installation
    Microsoft, lors du Keynote du TechEd Europe 2007, a annoncé la mise à disposition d'un nouveau ...
    Reporting Services et SharePoint - Utiliser SharePoint comme source de données
    Dans un précédent article, nous avons pu apprendre comment créer un rapport utilisant une source de ...
    JavaScript - Affiche un calendrier sous une zone de saisie
    Adobe - Adobe lance la version bêta publique de Photoshop
    Microsoft Expression Web - Premier contact
    Je suis revenu des Techday's 2008 avec une idée en tête. Je voulais savoir comme travailler avec ...
    PHP & MySQLi - de Hello / Sector One
    Hello de Sector One propose un article avec PHP et MySQLi, la nouvelle extension de MySQL
    VBScript - Zip de fichiers automatique et efface la source
    Dreamweaver CS3 + Php + Mysql - Trucs et Astuces - Part 4 -
    Pour changer, deux nouvelles astuces pour vous . Alternate Colors. Inscription et envoi de mail
    Magazines - Le N°106 de Programmez est disponible.
    Divers - Zone Webmasters
    PHP5 - Classe de connexion à MySQL
    Agenda - 20/03 : Boostez vos applis PHP-Windows Server 2008
    Créer un thème graphique pour WSS V3 - Comment créer un thème graphique pour WSS V3
    Nous avons vu dans un précédent article comment créer une master page. Il peut parfois être ...
    Les plans de maintenance et SQL Server 2000 - Installer un plan de maintenance sous SQL Server
    Dans le cadre de la gestion d'instances SQL Server 2000 hébergeant SharePoint, il est intéressant ...
    PHP - PHP et MYSQL - MySQLi - PDO
    Jeux de l'été (et de 4) - Un petit jeu de Mastermind
    C'est reparti pour un tour... Il y avait longtemps que je n'étais pas venu vous proposer un petit ...
    Migration WSS avec un Site Template spécifique - Migration WSS avec un Site Template spécifique
    Les précédents articles nous ont permis de voir les différents modes de migration de WSS V2 vers ...
    DataBase Upgrade de WSS V2 vers WSS V3 - Upgrade de WSS V2 vers WSS V3 par la DataBase
    Parmi les trois modes de migration de Windows SharePoint Services V2 vers WSS V3, nous avons vu les ...
    Création de module DotNetNuke en C# - Source : Jerome Fortias sap-integration.net
    Je vous propose un nouvel article consacré au développement de modules pour DotNetNuke en C#. Il ...
    ASP-PHP.net - On sera aux MS TechDays 2008 ! et vous ?
    Créer son modèle de rapports SSRS - Créer son modèle de rapports Reporting Services
    Après la création du modèle de style pour Reporting Services, il est souhaitable aussi d'avoir un ...
    PHP - publipostage sur rtf préformaté avec mysql
    Créer son style de rapports SSRS - Créer son style de rapports Reporting Services
    Lorsqu'on travaille avec Reporting Services pour développer ses rapports, on veut très souvent ...
    .NET - C#2 et ASP.NET 2.0 - Développez un projet de A à Z
    SharePoint - MOSS 2007 - De l'intégration au développement
    PHP - PHP 5 MySQL 5 AJAX
    Découverte de Visual Studio 2008 -
    Microsoft a annoncé, lors du TechEd'07 organisé à Barcelone, la mise à disposition de la release de ...
    Adobe - Photoshop Elements 6 Version MAC
    Adobe - Adobe sur Intergraphic 2008
    Reporting Services et données XML - Utiliser des données XML dans Reporting Services
    Une demande récente que j'ai reçue : Comment utiliser des données provenant d'un flux XML dans ...
    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 - Jolie arborescence dynamique
    Magazines - Le N°104 de Programmez est disponible
    PHP - PhPBB 3.0.0 !!!
    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   
     

    Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
     DotNet Project ASP-magazine TechNet Groupes Utilisateurs Microsoft MVP El Roubio The Inquirer FR Codes Sources CodePPC Wygwam