begin process at 2010 02 10 17:27:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers/Disque

 > UTILITAIRE POUR FORCER LE TÉLÉCHARGEMENT D'UN FICHIER SUR UN CLIENT WEB

UTILITAIRE POUR FORCER LE TÉLÉCHARGEMENT D'UN FICHIER SUR UN CLIENT WEB


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers/Disque Classé sous :téléchargement, download, contendisposition, header, http Niveau :Expert Date de création :24/11/2004 Vu / téléchargé :24 037 / 774

Auteur : shaiulud

Ecrire un message privé
Site perso
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cette page ASP force un téléchargement binaire du fichier mis en paramètre.
Un popup de confirmation apparait à l'utilisateur pour lui demander s'il veux ouvrir ou sauvegarder le fichier.

Dans l'exemple présent dans le source, j'ai nommé cette page dwdFile.asp; il suffira de corrigé l'appel selon le nom de votre fichier.

Source

  • <%
  • ' Utilisation dans la pages
  • ' appel direct : /dwdFile.asp?DwdFile=chemin/du/fichier/fichier.ext
  • ' lien hypertexte : <a href="dwdFile.asp?DwdFile=chemin/du/fichier/fichier.ext" target="_self">
  • Dim sFilePath, sFileName, sFileUrl, iPosStart
  • sFileUrl = Request("DwdFile")
  • iPosStart = InStrRev(sFileUrl, "/")
  • sFileName = Right(sFileUrl, len(sFileUrl)-iPosStart)
  • 'Lecture du fichier
  • Dim fso, oStream, sFileStream
  • Set fso = CreateObject("Scripting.FileSystemObject")
  • If fso.FileExists(Server.MapPath(sFileUrl)) Then
  • Set oStream = CreateObject("ADODB.Stream")
  • oStream.Open
  • oStream.LoadFromFile Server.MapPath(sFileUrl)
  • sFileStream = oStream.ReadText
  • oStream.Close
  • Set oStream = Nothing
  • else
  • response.write "The file, named <i>"& sFileName &"</i>, doesn't exits!"
  • response.end
  • end if
  • Set fso = Nothing
  • ' Préparation des entêtes HTTP pour l'envoi de fichier
  • Response.AddHeader "Content-Type", "application/octetstream"
  • Response.AddHeader "Content-Disposition", "attachment; filename="""& sFileName &""""
  • Response.AddHeader "Cache-Control", "must-revalidate, post-check=0, pre-check=0"
  • Response.AddHeader "Pragma", "no-cache"
  • Response.AddHeader "Expires", 0
  • 'Transfer du fichier en flux binaire
  • Response.BinaryWrite sFileStream
  • %>
<%
' Utilisation dans la pages
'	appel direct : /dwdFile.asp?DwdFile=chemin/du/fichier/fichier.ext
'   lien hypertexte : <a href="dwdFile.asp?DwdFile=chemin/du/fichier/fichier.ext" target="_self">

Dim sFilePath, sFileName, sFileUrl, iPosStart

sFileUrl = Request("DwdFile")
iPosStart = InStrRev(sFileUrl, "/")
sFileName = Right(sFileUrl, len(sFileUrl)-iPosStart)

'Lecture du fichier
Dim fso, oStream, sFileStream
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(Server.MapPath(sFileUrl)) Then
	Set oStream = CreateObject("ADODB.Stream")
	oStream.Open
	oStream.LoadFromFile Server.MapPath(sFileUrl)
	sFileStream = oStream.ReadText
	oStream.Close
	Set oStream = Nothing

else
	response.write "The file, named <i>"& sFileName &"</i>, doesn't exits!"
	response.end
end if
Set fso = Nothing


' Préparation des entêtes HTTP pour l'envoi de fichier
Response.AddHeader "Content-Type", "application/octetstream"
Response.AddHeader "Content-Disposition", "attachment; filename="""& sFileName &""""
Response.AddHeader "Cache-Control", "must-revalidate, post-check=0, pre-check=0"
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "Expires", 0


'Transfer du fichier en flux binaire
Response.BinaryWrite sFileStream
%>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source .NET (Dotnet) IMPORTER UN FICHIER EXCEL DEPUIS UN POSTE ET L'AJOUTER SUR L... par jseblavoie
SERVER.MAPPATH QUI ACCEPTE LES ../ par divlys
UPLOAD D'IMAGES VIA ADODB.STREAM ET SQL SERVER par Nicolas_kojack
LISTING DE FICHIERS ET RÉPERTOIRES (FONCTION RÉCURSIVE) par Warwick
Source .NET (Dotnet) .NET - CLASSE DE LOG D'EVÈNEMENT par fabrice69

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) EXEMPLE DE TRAITEMENT D'UNE REQUETTE HTTP AVEC HTTPHANDLER par istamkenitra
Source .NET (Dotnet) ASP.NET - COMMENT OBTENIR LE CONTENU D'UNE PAGE WEB DISTANTE... par fabrice69
Source .NET (Dotnet) ASP.NET - EXEMPLE SIMPLE DE GÉNÉRATION DE FLUX RSS par fabrice69
Source avec Zip Source avec une capture Source .NET (Dotnet) ASP.NET - EXEMPLE DE DÉVELOPPEMENT D'UN CUSTOM WEB CONTROL P... par fabrice69
Source avec Zip FAIRE DES TÉLÉCHARGEMENTS EXCLUSIFS par BinOff

Commentaires et avis

Commentaire de fabrice69 le 26/11/2004 09:53:37 administrateur CS

Ce code fonctionne lorsque l'appel ADODB Stream fonctionne. Ce n'est pas évident sur toutes les machines.
Je n'ai personnellement jamais réussi à le faire fonctionner dans mes anciennes expériences.

Bon travail.

C'est une bonne idée qui reprend l'idée des HttpHandler en .NET :
- http://www.asp-php.net/tutorial/asp.net/httphandlers.php

Romelard Fabrice.

Commentaire de visiteurvarois le 21/01/2005 18:11:41

Ca part bien... Mais, le fonctionnement est aléatoire. Parfois, le téléchargement bloque à 99%, puis terminé !

POURQUOI ??? Bonne chance !!!

Commentaire de shaiulud le 23/02/2005 21:43:10

Il est vrai que l'utilisation des composants ADODB sont soumis à l'environnement du serveur, mise à jour de patch de sécurité, montée de version du MDAC ...

Le choix de ce composant a été motivé par la facilité d'implémentation.

Pour ce qui est du téléchargement en lui même, il faut surtout regarder au niveau des headers HTTP, en utilisant les même en J2EE , PHP ou autre, ils seront toujours valable.

pour ce qui est du blocage à 99%, je pense qu'il faut analyser les composants du serveur pour trouver ce qui cloche, ce code fonctionne depuis 3 ans sur un site privé qui a 400 utilisateurs.

Commentaire de fr64 le 28/06/2005 11:48:58

Une précision qui peut être fort utile:
Si on travaille avec des fichiers purement binaires (image jpeg ou autres), il faut faire

    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type=1 ' Type de flux binaire (texte par défaut)
    oStream.LoadFromFile Server.MapPath(sFileUrl)
    sFileStream = oStream.Read ' ReadText pour les flux textes
    oStream.Close
    Set oStream = Nothing

Sinon, le fichier que l'on récupére peut être corrompu.
Dans mon cas, avec des fichiers jpeg, il me manquait 4 fois sur 5 le dernier octet (très important pour qualifier du jpeg). Résultat: impossible d'ouvrir le fichier dans photoshop.

Pour ce qui est du ADODB.Stream, c'est un objet standard de la bibliothéque ADO.
Il me semble que c'est un composant natif de Windows, donc à partir du moment où l'on est capable d'instancier par exemple un adodb.recordset, il ne devrait pas y avoir de problèmes pour un ADODB.Stream.
A moins qu'un administrateur système puisse gérer finement les objets ADO utilisables sur le serveur? Mais je n'ai jamais entendu parler de ça.






Commentaire de Ghost91 le 07/09/2005 20:27:05

Bonjour,

J'ai un soucis concernant ce code. En effet cela ne fonctionne pas quand je me trouve dans un environement HTTPS.

Quelqu'un connait la solution ???

Mille merci d'avance.

Commentaire de domi35 le 21/11/2005 20:13:22

Ce script marche bien et ne nécessite aucune installation.
Mais il n'est utilisable que pour des fichiers ne dépassant pas une certaine taille. J'ai testé avec un fichier de 3,5 Mo et c'est passé. Par contre avec des fichiers de 8 Mo ou plus le fichier téléchargé fait 0 octet... Le téléchargement est évidemment instantané ! Si qqu'un comprend ce qui se passe, et surtout si qqu'un a la solution, je suis preneur ! Ca fait longtemps que je cherche...

Commentaire de genie_vaw le 19/04/2006 04:05:16

utile pour piratage piratage aussi !!! alors c illégale. :)

Commentaire de loic72 le 28/04/2006 12:23:22

salut, j'ai un problème : le fichier ouvert est un fichier de copie! nom_file(1).ext
comment ouvrir le "bon" fichier pour pouvoir le modifier et l'enregistrer SVP?
+

Commentaire de prac le 04/04/2007 10:01:04

Salut à tous

Voila j'ai tester le code ci dessus et j'ai un problème avec la méthode MapPath qui m'affiche cette erreur :

erver.MapPath() error 'ASP 0171 : 80004005'

Chemin manquant

/dev/download.asp, line 27

Le paramètre Path doit être spécifié pour la méthode MapPath.

J'ai donc modifié le contenu de la variable et afficher son contenu j'ai alors cette erreur :

Caractère non valide pour le chemin - Un caractère non valide a été spécifié dans le paramètre Path pour la méthode MapPath.

est-ce quelqu'un aurait une idée...?

Merci d'avance!

Commentaire de fr64 le 04/04/2007 10:20:47

Le message d'erreur est clair non?
Il faut vérifier le chemin que tu passes à la méthode MapPath.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Aidez moi : Download [ par eihpos ] Bonjour à tousJe voudrais savoir si il est possible de downloader en http (pas de ftp) le contenu d'un répertoire sachant que ce répertoire n'est pas Récupération info fichier sur serveur http (Apache) distant [ par john_techform ] Bonjour,Voilà mon pb : je dois récupérer via un script ASP s'executant sur un serveur "http://www.MonServeur.com" des informations (taille, date de cr Adresse d'une page [ par beetsy ] bonjourJe vous explique :c une appli asp.netdans laquelle il y a des articles,je voudrais faire ca :lorsque je tappe par exemple : http://monappli.com Cacher url [ par beetsy ] salut à tousy a t-il une solution pour cacher l'url d'un site (autre moyen que de passer par les frames)je voudrais toujours avoir dans la barre d'adr Vérification presence activex sinon download [ par Jackboy ] Bonjour !J'aimerai avoir la méthode pour faire la vérification si l'usager à l'active x installé sur sa machine et sinon permettre le download de l'ac Insérer un header et footer sur des pages html [ par rodolp13 ] Bonjour,Je suis nouveau sur le site et je d&#233;veloppe mon tout premier site. J'ai commenc&#233; &#224; m'int&#233;resser &#224; la programmation il Sécurité quand tu nous tiens......... [ par rabbiwan ] Bonjour,Toujours dans la suite de mon site je voudrais mettre une bonne s&#233;curit&#233; (bien sur la s&#233;curit&#233; parfaite n'existe pas et n' Try Vs Response.Redirect("http://www.aspfr.com" ) [ par rabbiwan ] Bonjour,J'ai une petite question. Je travais en ASPX et C# et j'ai un probl&#232;me avec un try.voila dans ma page au niveau de private void Page_Loa comment récupérer l'url complete d'une page? [ par Chris_LaFouine ] J'ai&nbsp;3 pages asp , la page1 appelle la page2 avec des parametres et la page2 renvoie des parametres &#224; la page1, cependant, pour lancer la pa téléchargement de fichiers à partir d'un serveur par programmation [ par mohamed_bn ] med belhassenje veut concevoir une application ASP.net en c# qui peut t&#233;l&#233;charger un r&#233;pertoire entier sur la machine cliente (ou un en


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales