function de téléchargement

Eléphant du PHP | 100 Messages

13 mars 2012, 19:18

je viens de vérifier non il n'y a rien de tout sa je n'arrive pas à comprendre non plus ...

Eléphant du PHP | 100 Messages

16 mars 2012, 00:13

il ne faudrait pas que je vérifie d'abord l'extension du fichier, pour ensuite lancer le téléchargement en fonction de l'extension du fichier ?

Cordialement,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 mars 2012, 08:01

Pas l'entension (c'est que tu flan, la preuve tu à copier ici le contenu d'une images) tu peux très bien avoir une vidéo avec une extension .txt ou .php (bon c'est pas recommandé c'est réalisable sans même se fouler un neurone).

Le type mime, bien que falsifiable, est déjà plus utile.
Ceci dit tu peux très bien dire que c'est un flux d'octets et ça en reste la (le navigateur ne proposera pas une exploitation direct mais c'est pas vital et devrait fonctionner tout le temps, je pense.

Pour simplifier le code :
- utilise fread plutôt que la boucle
- pour les fichiers autres que texte à tu testé le paramètre b pour fopen (fopen('fichier','rb');).
- vire le flush il n'a aucune utilité, pire s'il a des caractères invisible y a des chances qu'il les envoie (c'est son boulot de vider les tampons vers le navigateur ce qui pourrait être la source du soucis.
- passer les chemins comme ça dans l'est une très très mais alors très mauvaise idée : en deux minutes on récupère tout le code source de ton site avec login / mdp qui sont dedans => technique à oublier d'urgence ;)
- un test avec file_get_contents + echo ?

l'upload sur le serveur c'est un script à toi ou un client FTP ? (en gros est ce que le fichier n'arrive pas corrompu sur le serveur ?)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 100 Messages

17 mars 2012, 16:36

pour le type mime j'ai regardé ici : http://php.net/manual/fr/function.mime-content-type.php il faut donc utiliser file info ?

pour dire que c'est un flux d'octet il faut bien utiliser ceci :

Code : Tout sélectionner

header("Content-Type: application/octet-stream; ");
Je ne veux pas et je ne peux pas utiliser fread (c'est pour me faire la main sans le fread).
J'ai enlevé le flush et le sleep.

Le chemin que je passe n'est pas visible dans l'url directement je met en faite à jour l'url à l'aide du javascript ceci est totalement invisible pour l'utilisateu qui va sur le site.

Sinon je ne sais pas comment mettre mon : echo (file_get_contents($local_file));

Et j'ai modifié mon code, et j'ai maintenant une nouveauté quand je télécharge un fichier texte j'ai ceci qui apparait :

<div id="header">
<div id="title"><a href="index.php">Filer</a></div>

Cordialement,