Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1465 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Petit soucis pour téléchargement d'un fchier

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Petit soucis pour téléchargement d'un fchier

n°1339213
xtof_83
Freeride Spirit
Posté le 04-04-2006 à 22:35:31  profilanswer
 

Salut,
 

Code :
  1. function ForceFileDownload($file){
  2.     $filesize = @filesize($file);
  3.     header("Content-Disposition: attachment; filename=".$file);
  4.     header("Content-Type: application/octet-stream" );
  5.     header("Content-Type: application/force-download" );
  6.     header("Content-Type: application/download" );
  7.     header("Content-Transfer-Encoding: binary" );
  8.     header("Pragma:no-cache" );
  9.     header("Expires:0" );
  10.     @set_time_limit(600);
  11.     readfile('../videos/'.$file);
  12. }


 
Bon moi je me suis mis ça sur mon site, car j'ai ajouté un compteur lors d'un dl d'une vidéos sur mon site.
et il falais donc que j'ouvre la vidéo coresspondante au lien.
 
Mais aprés, le temps que la vidéo se dl, j'ai plus accés à aucune page de mon site, si je clique sur un lien de la barre de menu, ça me demande, voulez vous ouvrir, index.php avec ceci...news.php avec ceci..
 
si quelqu'un sait d'ou viend ce comportement :D.
 
De plus sous IE, le téléchagement s'arrête jamais.... [:atog] (en local oui, pas sur Free)
 
Merci

mood
Publicité
Posté le 04-04-2006 à 22:35:31  profilanswer
 

n°1339217
nargy
Posté le 04-04-2006 à 22:39:26  profilanswer
 

header("Content-Type: application/octet-stream" );
header("Content-Type: application/force-download" );
header("Content-Type: application/download" );
 
faudrait te décider !?

n°1339226
xtof_83
Freeride Spirit
Posté le 04-04-2006 à 22:47:16  profilanswer
 

là j'ai épuré:
 

Code :
  1. function ForceFileDownload($file){
  2.     $filesize = @filesize($file);
  3.     header("Content-Disposition: attachment; filename=".$file);
  4.     //header("Content-Type: application/octet-stream" );
  5.     header("Content-Type: application/force-download" );
  6.     //header("Content-Type: application/download" );
  7.     header("Content-Transfer-Encoding: binary" );
  8.     header("Pragma:no-cache" );
  9.     header("Expires:0" );
  10.     //@set_time_limit(600);
  11.     readfile('../videos/'.$file);
  12. }


 
ça change rien lol....

n°1339231
nargy
Posté le 04-04-2006 à 22:50:52  profilanswer
 

> De plus sous IE, le téléchagement s'arrête jamais.... [:atog] (en local oui, pas sur Free)
- tu dépasse peut être la taille maximale autorisé par Free (?)
 
> si je clique sur un lien de la barre de menu, ça me demande, voulez vous ouvrir, index.php avec ceci...news.php avec ceci..  
- est tu sûr d appeler la fonction ForceDownload au bon moment? (genre bugs avec les sessions..)

n°1339233
nargy
Posté le 04-04-2006 à 22:53:23  profilanswer
 

je suis en train d essayer avec FF, il me dit taille fichier inconnue, ajoute content-length...

n°1339250
xtof_83
Freeride Spirit
Posté le 04-04-2006 à 23:03:24  profilanswer
 

Ah j'avais pas vu que tu t'occuper de moi, merci ;)
 
Bon de mon côté mes pistes m'ont amenées aussi à content-length...
 
là c'est en cours de test...
 
Pour l'autre probléme, j'ai entendu que certain site bloqué à ce niveau là parfois les entrés/ip...
 
Mais bon ça me parait bizare.
 
...ah sinon nickel le téléchargement s'arrête...Un probléme de fixé :sweat:

n°1339266
nargy
Posté le 04-04-2006 à 23:21:37  profilanswer
 

ça marche nickel avec FF

n°1339269
xtof_83
Freeride Spirit
Posté le 04-04-2006 à 23:23:43  profilanswer
 

comment ça...t'arrive à changer de page ?
 
Sinon le reste oui marche nickel sous FF et IE :D

n°1339273
nargy
Posté le 04-04-2006 à 23:26:02  profilanswer
 

sauf que:
- ça buggue quand je télécharge une vidéo (mystère, c est pas free puisque je peut downloader les news avec wget, peut être que j ai trop de téléchargements en cours: pas idéal pour tester)
 
- pas de reprise de téléchargement (pas idéal pour de la vidéo...)
 
tu peut pas faire le compteur avec une redirection plutot? à mon avis ça serait plus pratique et ça buggerai moins...

n°1339275
xtof_83
Freeride Spirit
Posté le 04-04-2006 à 23:28:57  profilanswer
 

Ben comment ça.. là quand je clic sur le lien, ça me recharge la page avec en param l'id de la vidéo, puis j'incrémente la BD et je lance la dl...


Message édité par xtof_83 le 04-04-2006 à 23:29:19
mood
Publicité
Posté le 04-04-2006 à 23:28:57  profilanswer
 

n°1339285
nargy
Posté le 04-04-2006 à 23:43:57  profilanswer
 

oui mais tu n a pas de reprise de téléchargement (c est à dire que si ça plante tu ne peut pas reprendre au même endroit)
 
à la place tu peut faire un popup qui affiche une page d attente, qui compte, et qui redirige (instantanément) vers la vidéo. + un lien pour les navigateurs qui ne supportent pas les redirections. + si le navigateur le supporte, il affichera la vidéo dans le popup. + si le navigateur le supporte proposera de sauvegarder le fichier.
enfin, un truc du genre quoi...

n°1339297
xtof_83
Freeride Spirit
Posté le 04-04-2006 à 23:59:29  profilanswer
 

lol oki doki...tout compris ;)
 
C'est pour ça que par défaut quand on dl un truc, ça ouvre une page vide :D
 
Bon merci pour tout mec...je vais me charger du reste.

n°1339302
nargy
Posté le 05-04-2006 à 00:06:19  profilanswer
 

attention, ta méthode peut être valable, mais il faudrait que tu gère la reprise, et je n ai aucune idée comment s y prendre (jamais essayé en PHP), probablement avec les headers qu il faut et une vérif des infos (lesquelles?)

n°1339305
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 00:09:13  profilanswer
 

Ouais bon sinon, ça marche toujours pas avec une page ouverte ou pas, j'ai plus accés au site :D
 
ça m'étonne que ça vienne du code, mais bon...

n°1339309
nargy
Posté le 05-04-2006 à 00:17:09  profilanswer
 

ben je peut pas te dire, mais quand je téléchargeai la vidéo:
- je ne pouvai pas avoir accès au autres pages avec FF (timeout !silencieux!)
- je pouvais downloader en même temps avec un logiciel de téléchargement (wget) la page de news
 
donc: ça ne vient pas d une restriction de Free
 
les headers de la page news.php semblent corrects:


 1 HTTP/1.1 200 OK
 2 Date: Tue, 04 Apr 2006 21:03:57 GMT
 3 Server: Apache/ProXad [Mar 28 2006 05:12:42]
 4 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
 5 Expires: Thu, 19 Nov 1981 08:52:00 GMT
 6 Pragma: no-cache
 7 X-Powered-By: PHP/4.3.10
 8 Set-Cookie: PHPSESSID=84178ae65bf86fb624d3932c9f747437; path=/
 9 Connection: close
10 Content-Type: text/html


 
je re-teste en mettant en pause mes autres téléchargements.

n°1339312
nargy
Posté le 05-04-2006 à 00:22:58  profilanswer
 

ha non, tu as déjà changé pour le popup, fait le plus petit:

Code :
  1. <a href="redirect.php?video.avi" target=_blank onclick="javascript:window.open('redirect.php?video.avi','_blank','width=200,height=100');return false;">


 
(fonctionne avec/sans javascript)

n°1339319
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 00:32:44  profilanswer
 

lol ça m'embête un peu de mettre du Javascript pour ça :D

n°1339320
nargy
Posté le 05-04-2006 à 00:34:31  profilanswer
 

bah, c est kedal, un popup ça se fait toujours avec un bout de JS, en plus ça marche aussi sans javascript.
le <<return false>> assure que le <<href>> ne sera pas executé si il y a javascript, sinon ça execute le <<href>> et le <<target>>.

n°1339322
nargy
Posté le 05-04-2006 à 00:37:41  profilanswer
 

heu, je te ferai remarquer que <<Content-Description: File Transfer>> oblige à télécharger plutot que visionner.

n°1339324
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 00:39:53  profilanswer
 

ouais mais moi je veux pas qu'on visionne ;)
Mais je veux qu'on puisse encore se ballader.
 
Bon Merci pour leclairsiement JS, :D

n°1339325
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 00:43:50  profilanswer
 

Bon pour la popup c'est bon j'ai modifié, aprés quand j'ai le temps, j'y placerait tout les options...

n°1339327
nargy
Posté le 05-04-2006 à 00:46:41  profilanswer
 

ouais les options ça a lair d aller
tu rajoutera un pti gif de téléchargement sur la page d attente
par contre ça télécharge pas chez moi

n°1339331
nargy
Posté le 05-04-2006 à 00:53:35  profilanswer
 

ça y est ça marche, après un reload de la page principale ``vidéos``

n°1339334
nargy
Posté le 05-04-2006 à 00:56:26  profilanswer
 

je te mets de la doc sur les options des popups:
 

  • status   The status bar at the bottom of the window.
  • toolbar  The standard browser toolbar, with buttons such as Back and Forward.
  • location  The Location entry field where you enter the URL.
  • menubar  The menu bar of the window directories, the standard browser directory buttons, such as What's New and What's Cool
  • resizable  Allow/Disallow the user to resize the window.
  • scrollbars  Enable the scrollbars if the document is bigger than the window
  • height  Specifies the height of the window in pixels. (example: height='350')
  • width  Specifies the width of the window in pixels.


Message édité par nargy le 05-04-2006 à 00:56:57
n°1339335
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 00:59:33  profilanswer
 

:lol: Tu sais je suis loin d'être noobs en HTML/CSS/JS :D
 
Le Js c'est juste que quand je peux ne pas l'utiliser, je l'utilise pas :D
 
Mais merci quand même pour tout le mal que tu te donnes.
Moi commence légérement à me taper sur les nerfs...Et rien sur google

n°1339337
nargy
Posté le 05-04-2006 à 01:03:24  profilanswer
 

> Tu sais je suis loin d'être noobs en HTML/CSS/JS :D
oui, j ai remarqué, cétait juste pour te faciliter le travail
(je regarde la télé pendant que je surfe)
 
> Et rien sur google
quest ce que tu cherche?

n°1339340
nargy
Posté le 05-04-2006 à 01:06:53  profilanswer
 

width=352,height=288
et vire Content-Description: File Transfer

n°1339341
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 01:09:44  profilanswer
 

navigation impossible lors d'un telechargement
 
telechargement bloque acces site
 
Je suis pas trés en forme de motclé ce soir, et pas motivé de lire de l'anglais...
 
Tiens vais tenter quand même.

n°1339347
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 01:14:28  profilanswer
 

nargy a écrit :

width=352,height=288
et vire Content-Description: File Transfer


 
 
Rien de changé  :sweat:

n°1339348
nargy
Posté le 05-04-2006 à 01:15:10  profilanswer
 
n°1339350
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 01:16:52  profilanswer
 

Code :
  1. function ForceFileDownload($file){
  2.    //First, see if the file exists
  3.    if (!is_file('../videos/'.$file)) { die("<b>404 File not found!</b>" ); }
  4.    //Gather relevent info about file
  5.    $len = filesize('../videos/'.$file);
  6.    $filename = basename('../videos/'.$file);
  7.    $file_extension = strtolower(substr(strrchr($filename,"." ),1));
  8.    //This will set the Content-Type to the appropriate setting for the file
  9.    switch( $file_extension ) {
  10.          case "pdf": $ctype="application/pdf"; break;
  11.      case "exe": $ctype="application/octet-stream"; break;
  12.      case "zip": $ctype="application/zip"; break;
  13.      case "doc": $ctype="application/msword"; break;
  14.      case "xls": $ctype="application/vnd.ms-excel"; break;
  15.      case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  16.      case "gif": $ctype="image/gif"; break;
  17.      case "png": $ctype="image/png"; break;
  18.      case "jpeg":
  19.      case "jpg": $ctype="image/jpg"; break;
  20.      case "mp3": $ctype="audio/mpeg"; break;
  21.      case "wav": $ctype="audio/x-wav"; break;
  22.      case "mpeg":
  23.      case "mpg":
  24.      case "mpe": $ctype="video/mpeg"; break;
  25.      case "mov": $ctype="video/quicktime"; break;
  26.      case "avi": $ctype="video/x-msvideo"; break;
  27.      //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
  28.      case "php":
  29.      case "htm":
  30.      case "html":
  31.      case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>" ); break;
  32.      default: $ctype="application/force-download";
  33.    }
  34.    //Begin writing headers
  35.    header("Pragma: public" );
  36.    header("Expires: 0" );
  37.    header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
  38.    header("Cache-Control: public" );
  39.    //header("Content-Description: File Transfer" );
  40.  
  41.    //Use the switch-generated Content-Type
  42.    header("Content-Type: $ctype" );
  43.    //Force the download
  44.    $header="Content-Disposition: attachment; filename=".$filename.";";
  45.    header($header);
  46.    header("Content-Transfer-Encoding: binary" );
  47.    header("Content-Length: ".$len);
  48.    @readfile('../videos/'.$file);
  49.    exit;
  50. }


 
Bon mon truc c'est ça maintenant :D...
Un peu amélioré, mais rien de plus ce que tu mas dis de virer...

n°1339352
nargy
Posté le 05-04-2006 à 01:19:36  profilanswer
 

> Rien de changé  :sweat:  
si, la taille du popup [:rofl]
> Content-Disposition: attachment;
n est pas censé forcer le download, juste fournir un nom de fichier au cas où
 [:dur]  
 
à toi de voir...

n°1339353
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 01:20:50  profilanswer
 


 
Tu as abusé de copier - coller  :lol:  
 
Bon mais toi, tu me parles de quoi là... :whistle: ...car je crois qu'on est en quipropos sévére... :D
 
La fatigue des 2 camps... [:aia]

n°1339354
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 01:23:39  profilanswer
 

nargy a écrit :

> Rien de changé  :sweat:  
si, la taille du popup [:rofl]
> Content-Disposition: attachment;
n est pas censé forcer le download, juste fournir un nom de fichier au cas où
 [:dur]  
 
à toi de voir...


 
 
Ouias la popup comme ça c'est vachement plus classe [:saul williams]

n°1339355
nargy
Posté le 05-04-2006 à 01:24:57  profilanswer
 

ha ouais, non
 
tu te prends grave la tête
 
moi ce que je disait c était de laisser apache faire
 
dans le popup, tu met juste:
 

Code :
  1. header(location: $file); // hop, redirect
  2. compterEnPlus($file); // hop, modif BDD
  3. afficheMessageAttente($file); // hop, petite anim gif


 
Après le serveur web s occupe automatiquement des headers, de la reprise, et le navigateur s occupe d afficher dans le popup, ou de proposer le téléchargement/lecture dans une appli.

n°1339356
nargy
Posté le 05-04-2006 à 01:26:28  profilanswer
 

enfin, avant de tout virer... :D ...garde une copie au cas où ;)

n°1339358
nargy
Posté le 05-04-2006 à 01:34:08  profilanswer
 

ça fait un moment que ta pas posté.. soit tu bosse dur, soit tu te tape la tête contre le clavier.. :lol:

n°1339360
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 01:36:39  profilanswer
 

Ben je me tape la tête sur AJAX pour IE :D
 
Et pour cette connerie...sans solution...
 
Bon fnalement tu me propose de déménager tout mon merdier, un peu plus loin , mais sans que çà change le bordel :lol:

n°1339361
nargy
Posté le 05-04-2006 à 01:51:48  profilanswer
 

ajax? pour quoi faire, je connais pas ajax. ça a le nom d un truc qui décape mon navigateur, et il n a pas besoin d être décapé mon navigateur :)
 
> Bon fnalement tu me propose de déménager tout mon merdier, un peu plus loin , mais sans que çà change le bordel
 
déménager... je dirai plutot te dépétrer... la liste des types mimes ça me parait un peu risqué, surtout que le serveur web gère déjà tout ça.
 
ceci dit c est interessant.... mais tu va mettre du temps à reproduire ce que fait déjà apache, et je ne suis pas sûr qu il y ai un gain quelquonque ..?

n°1339362
xtof_83
Freeride Spirit
Posté le 05-04-2006 à 01:57:14  profilanswer
 

lol...
 
Mouais oki, donc je vais virer tout le blabla ;)
et on verra bien, mais je ferais ça demain, car j'ai les yeux qui piquotent.
 
AJAX :D
Ben c'est JS qui discute avec PHP, c'est beau l'amour...lol.
Et ça me sert dans ma partie Spots, pour remplacer le JS/HTML pourri qui me permet pas de valider ma page.
 
(pour les listes, la seconde interférant avec la premiére)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Petit soucis pour téléchargement d'un fchier

 

Sujets relatifs
Navigation par page 10*10, petit soucis[RESOLU] Petit script VBS
Petit problème de parse errorsoucis avec firefox
Petit soucis d'un débutant ...quels sont les limites du c# ? vos petit prjts et progs Perso ?
batch , plus petit ou egal[resolu] forcer telechargement pdf : ca marche, mais...
Plus de sujets relatifs à : Petit soucis pour téléchargement d'un fchier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR