Accueil > Forum > > > > Forcer un téléchargement (pas forcement simple)
Forcer un téléchargement (pas forcement simple)
lundi 23 novembre 2009 à 11:29:35 |
Forcer un téléchargement (pas forcement simple)

La Guite
|
Bonjour à tous,
Je cherche a forcer le téléchargement d'un fichier image de 3 à 4Mo (sur mon site hébergé chez free.
Avec une recherche google, on trouve facilement ce genre de code :
Code PHP :
// Envoi du fichier
header('Content-Transfer-Encoding: none');
header('Content-Type: application/octetstream; name="'.$name.'"');
header('Content-Disposition: attachment; filename="'.$name.'"');
header('Content-length: '.filesize($lien));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
@readfile($lien) OR die();
Ou même
Code PHP : header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$name);
readfile($lien);
Ou encore
Code PHP :
switch(strrchr(basename($lien), ".")) {
case ".png": $type = "image/png"; break;
case ".gif": $type = "image/gif"; break;
case ".jpg": $type = "image/jpeg"; break;
default: $type = "application/octet-stream"; break;
}
header("Content-disposition: attachment; filename=".$name);
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: image/jpeg\n");
header("Content-Length: ".filesize($lien));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile($lien);
Ces codes fonctionnent en partit. Ils m'ouvre pas de nouvelle fenêtre et me propose d'enregistrer le fichier. Sur le serveur (en local tout marche bien), lorsqu'une personne télécharge l'image elle est à tous les coups corrompus. J'ai soit une demi photo (l'autre moitier est totalement grise), soit un décalage de la photo (décalage de couleur et/ou de position).
Aucune photo télécharger n'est donc correct.
Quelqu'un sait pourquoi ce phénomène m'arrive ?
Y a t'il une solution ?
La Guite
|
|
mardi 24 novembre 2009 à 15:39:35 |
Re : Forcer un téléchargement (pas forcement simple)

Mcjo
|
Essaie ça:
Code PHP : switch(strrchr(basename($lien), ".")) {
case ".png": $type = "image/png"; break;
case ".gif": $type = "image/gif"; break;
case ".jpg": $type = "image/jpeg"; break;
default: $type = "application/octet-stream"; break;
}
header("Content-disposition: attachment; filename=".$name);
header("Content-Type: $type");
header("Content-Length: ".filesize($lien));
header('Content-Transfer-Encoding: binary');
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile($lien);
ob_clean();
flush();
readfile($file);
exit;
header("Content-Transfer-Encoding: image/jpeg\n");
ne semble pas bon.
|
|
mardi 24 novembre 2009 à 17:58:42 |
Re : Forcer un téléchargement (pas forcement simple)

La Guite
|
Même problème....
(j'ai enlevé un readfile($lien) qui je pense, était là par mégarde)
J'ai comme l'impression qu'il arrête le téléchargement à un certain moment.
Chose étrange, la miniature de la photo téléchargé est correcte, quand on l'affiche plein écran il en manque la moitier (ou plus ou moins).
Je désespère un peu quand même.
La Guite
|
|
mardi 24 novembre 2009 à 18:19:26 |
Re : Forcer un téléchargement (pas forcement simple)

Mcjo
|
Essaie de remplacer le
readfile($file);
par
$fp = fopen($file, "r");
$contents = '';
while (!feof($fp)) {
$contents .= fread($fp, 1024);
}
fclose($fp);
echo $contents;
|
|
mercredi 25 novembre 2009 à 09:57:24 |
Re : Forcer un téléchargement (pas forcement simple)

La Guite
|
Toujours le même problème.
J'ai comme l'impression que le problème vient du téléchargement.
On dirait qu'au bout d'un certain temps, le téléchargement s'arrête, ce qui casse mon image.
Ce qui expliquerait qu'en local je n'ai pas ce problème.
Surement un problème avec mon hébergeur ?
La Guite
|
|
mercredi 25 novembre 2009 à 10:24:56 |
Re : Forcer un téléchargement (pas forcement simple)

Mcjo
|
En effet, vérifie avec la fonction phpinfo(), la taille de "memory_limit" et "max_execution_time".
Si memory_limit est trop bas tu peux contourner le problème, en vidant régulièrement le buffer :
$fp = fopen($file, "r");
$contents = '';
while (!feof($fp)) {
ob_end_flush();
ob_flush();
flush();
ob_start();
echo fread($fp, 1024);
}
fclose($fp)
|
|
mercredi 25 novembre 2009 à 14:44:04 |
Re : Forcer un téléchargement (pas forcement simple)

La Guite
|
Toujours le même problème. Voici le code utilisé :
Code PHP :
switch(strrchr(basename($lien), ".")) {
case ".png": $type = "image/png"; break;
case ".gif": $type = "image/gif"; break;
case ".jpg": $type = "image/jpeg"; break;
default: $type = "application/octet-stream"; break;
}
header("Content-disposition: attachment; filename=".$name);
header("Content-Type: $type");
header("Content-Length: ".filesize($lien));
header('Content-Transfer-Encoding: binary');
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
$fp = fopen($lien, "r");
$contents = '';
while (!feof($fp)) {
ob_end_flush();
ob_flush();
flush();
ob_start();
echo fread($fp, 1024);
}
fclose($fp);
Ton idée m'a fait pensé à un autre problème que j'ai rencontré : c'est la durée d'exécution d'une page php.
Grosso modo, lorsque le traitement du fichier est trop long, le serveur le stop.
Cela pourrait il venir de ça ?
Le problème c'est que je ne peut pas utiliser la méthode set_time_limit() ou même modifier le php.ini
PS: pourtant le téléchargement de la vidéo fonctionne bien et n'est pas duré dans le temps.
La Guite
|
|
mercredi 25 novembre 2009 à 18:24:55 |
Re : Forcer un téléchargement (pas forcement simple)

Mcjo
|
Je ne vois qu'une solution.
Ouvre ta photo avec un éditeur hexa et regarde si tu as un message d'erreur d'execution à la fin du fichier.
Ou sous windows tu dois pouvoir le faire facilement avec debug
|
|
jeudi 26 novembre 2009 à 09:37:52 |
Re : Forcer un téléchargement (pas forcement simple)

La Guite
|
Bizar, ce matin j'ai eu 1 seul échec sur 4 téléchargement.
Sur les originales comme les télécharger je n'ai rien vu de spécial en hexa.
J'ai bien l'impression que c'est pas le code le problème, mais le serveur (ce matin moins de charge donc réussit).
Du coup la je désespère plus....
La Guite
|
|
vendredi 27 novembre 2009 à 14:54:12 |
Re : Forcer un téléchargement (pas forcement simple)

La Guite
|
Personne n'a d'idée que je pourrais creuser ?
La Guite
|
|
Cette discussion est classée dans : code, type, image, header, content
Répondre à ce message
Sujets en rapport avec ce message
Problème de header("Content-type: image/jpeg") [ par clemthecool ]
Salut à tous,j'ai un 'ti soucis au niveau de l'affichage de mes utilisateurs inscrits dans mon annuaire LDAP.Mon annuaire marche correctement et j'arr
Redirection apres avoir forcer le download [ par ASPerix ]
Bonjour,J'ai une page 'download.php' avec le code:header("Content-disposition: attachment; filename=".$nom_fichier);header("Content-Type: application/
Header PNG louche? [ par MAsterC ]
Salut à tous!dans mon index en tête j'ai mis ceci comme Header:header ("Content-type: image/png");Biensur apres.. avec ce code nous serons
Header content-type *.avi [ par xactise ]
bonjour j'aimerai bien savoir le content-type d'un fichier *.avi j'ai chercher sur google j'ai pas trouver grand chosesi vous avez un site qui reperto
Header Content type [ par xactise ]
Bonjours je voudrai savoir si toute les extension de fichier on un content-type ? parce que j'aimerai proposer en upload sur mon site des fichier a l'
Récupération de fichiers impossible [ par beth2611 ]
Bonjour, Voici mon problème, je tente désépérément de permettre la récupération de ichiers déposés sur le serveur, mais les header déjà inclus foncti
problème avec header( 'Content-Type: application/msdoc' ) et images [ par zainatdi ]
Bonjour, j'ai un probleme avec header( 'Content-Type: application/msdoc' ); je veux libré un fichier word aprtir de mon page web alors j'ai met hea
probleme d'affichage d'image [ par niyio ]
bonjour j'ai un petit souci: j'ai tester un code(de m@teo) et il m'affiche une image. mais le problème est quand j'intègre ce code dans une condition
Récupérer nom d'une image [ par webalexpb ]
Bonjour , j'essaie de faire un script de news avec titre, contenu , image , date, mais je n'arrive pas à récupérer le nom de l 'image uploadé pour la
php variable et header [ par marine34000 ]
Bonjour, J'ai déjà réussi a mettre des variables dans un header, mais la je ne comprend ps je n'y arrive plus j'ai un variable queje dois passer nor
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
XML ET PHPXML ET PHP par karouani
Cliquez pour lire la suite par karouani
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|