Documents en téléchargement

Damien Grimault
#1 le 24/07/2008 à 18:12
Bonjour à tous,
Quelqu'un pourrait-il me dire comment installer des fichiers (zip, pdf, avi...) en téléchargement sur une page ?
J'arrive a insérer des liens vers les fichiers du centre de ressources, mais quand on clique sur ces liens, les documents s'ouvrent dans la fenêtre au lieu de proposer de les enregistrer sur le DD du visiteur (sauf les zip). Ce n'est pas du tout l'effet recherché.
Y a t il une solution accessible à des clients lambda, c'est à dire sans aller tripatouiller le code html ?
Merci de votre aide.
Dag
Thomas Hesse
Avatar
#2 le 28/07/2008 à 08:53
Bonjour,

Le comportement d'un lien quand on clique dessus dépend de la configuration du navigateur. Typiquement, si le navigateur possède des plug-ins permettant l'ouverture d'un certain type de fichier (PDF, vidéo...), il les ouvrira directement au lieu de les télécharger.

En d'autres termes, l'effet du clic dépend de chaque configuration, et on ne peut absolument pas forcer quoi que ce soit. La seule "solution" que je connaisse, disponible sur tous les navigateurs, c'est le "clic droit, sauvegarder sous...".
--
Thomas - Chargé de support et d'assistance
Julien Lafillé [37e Parallèle Multimédia]
#3 le 28/07/2008 à 10:04
Bonjour,

si je puis me permettre : confronté dans le passé à cette situation et ne pouvant me résoudre à la solution évoquée par Thomas, j'ai trouvé via Google un script PHP permettant de "forcer" le téléchargement de fichiers médias (JPG, PDF, ZIP, MP3...).
L'utilisation en était la suivante (en supposant que le script en question s'appelle dl.php) :
remplacer un lien du style
par

Par contre, je n'ai absolument pas testé ce script en environnement Emajine et ne fournit aucune garantie et aucun support quant à son utilisation.
Par ailleurs, je laisse à la discrétion de Medialibs le choix de le laisser publié ou pas.
Le voici donc :

$file_down = $_GET['file'];

function dl_file($file){

//First, see if the file exists
if (!is_file($file)) { die("404 File not found!" ); }

//Gather relevent info about file
$len = filesize($file);
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"." ),1));

//This will set the Content-Type to the appropriate setting for the file
switch( $file_extension ) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;

//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
case "php":
case "htm":
case "html":
case "txt": die("Cannot be used for ". $file_extension ." files!" ); break;

default: $ctype="application/force-download";
}

//Begin writing headers
header("Pragma: public" );
header("Expires: 0" );
header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header("Cache-Control: public" );
header("Content-Description: File Transfer" );

//Use the switch-generated Content-Type
header("Content-Type: $ctype" );

//Force the download
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header );
header("Content-Transfer-Encoding: binary" );
header("Content-Length: ".$len);
@readfile($file);
exit;
}

dl_file($file_down);
?>


Damien Grimault
#4 le 28/07/2008 à 15:17
Merci Julien...
Effectivement je travaille actuellement avec un CMS (non-open) qui propose cette option. Donc on peut bien forcer le navigateur à ouvrir ou proposer en téléchargement les documents liés.
Cela pourrait constituer une amélioration pour les prochaines versions d'e-majine...
Dag
Julien Lafillé [37e Parallèle Multimédia]
#5 le 29/07/2008 à 16:10
[Petit edit]
Désolé, je m'aperçois que j'ai oublié de mettre certaines parties de mon message précédent entre balises "codes".
Il fallait lire :

(...)L'utilisation en était la suivante (en supposant que le script en question s'appelle dl.php) :
remplacer un lien du style

par


Julien

Actualités Medialibs

Formation collective les 17 et 18...

En savoir plus...

Inscrivez-vous à la formation sur...

Un site e-commerce en Flash

site Quai
En savoir plus...

Découvrez le premier site e-commerce...

Formation collective les 13 et 14...

En savoir plus...

Inscrivez-vous à la formation sur...

Un partenariat avec l'éditeur de...

Logo EBP
En savoir plus...

Medialibs envisage une collaboration...

Bientôt la sortie de la V1.3...

emajine-carre-135
En savoir plus...

Medialibs vous présentera, en début...

Les grands projets

Les API pour les programmeurs

Afin de permettre aux programmeurs d'intégrer plus facilement leurs propres...

Suivre le développement
L'éditeur d'apparences Flash

Véritable innovation, cet éditeur d'apparences vous permet d'intégrer...

Suivre le développement

[Communauté] E-majine

Modification du champ "Case à cocher...

En savoir plus...

Une nouvelle option "Nombre maximum...

Les catégories de l'annuaire côté...

En savoir plus...

Les catégories de l'annuaire sont...

[Communauté] Izi-Media

Des nouvelles chartes graphiques pour...

En savoir plus...

Trois nouvelles chartes graphiques...

Sortie - Nouvelle version d'Izi-Media

En savoir plus...

La nouvelle version d'Izi média est...