Download, rien a faire ca part pas

Download, rien a faire ca part pas - PHP - Programmation

Marsh Posté le 09-09-2004 à 12:28:39    

je suis sur la page movie.php qui se trouve dans /page a la racine et je veut download un fichier qui se trouve dans /movie de la racine
 
j'ai fait
 

Code :
  1. if (isset($_GET["download"])) {
  2.   header("Content-type: video/quicktime" );
  3.   $movie = $film->movie_file;
  4.   $path="../movie/".$movie;
  5.   Header("Content-Length: ".filesize($path));
  6.   header("Content-Disposition: attachment; filename=".$movie);
  7. }

sa savoir que $movie et $path me retourne les bonnes valeurs.
 
le filesize egalement.
Le probleme est que ca ne download pas le fichier, mais la source de la page [:opus dei]  
 
ptit coup de main

Reply

Marsh Posté le 09-09-2004 à 12:28:39   

Reply

Marsh Posté le 09-09-2004 à 12:34:05    

heuu question idiote mais ... en php, 'Header()' et 'header()' , c'est pareil ? .. il n'est pas case-sensitive ?

Reply

Marsh Posté le 09-09-2004 à 12:36:46    

ca ne change rien :)

Reply

Marsh Posté le 09-09-2004 à 12:42:47    

heuu la seule et unique fois où j'ai dû faire un truc comme ça, je tapais bêtement le mime-type en header puis j'ouvrais le fichier et le crachais en sortie ( j'avais fait ça pour des sonnerie imode pour mon nec à l'époque ) ... je ne jouais pas avec le content-length ou -disposition ...

Reply

Marsh Posté le 09-09-2004 à 12:46:08    

ben partout ou je voit des source je vois ce que j'ai tapé, des fois sans le filesize, que j'ai d'ailleur retiré

Reply

Marsh Posté le 09-09-2004 à 12:49:06    

mmmh vois avec ça http://www.zend.com/manual/function.fpassthru.php ..
On sait jamais ..

Reply

Marsh Posté le 09-09-2004 à 12:49:21    

http://if-faw.com/forum/sam_dl.jpg
 
toutes les infos sont pourtant bien presentes :/

Reply

Marsh Posté le 09-09-2004 à 12:50:15    

ha ok et donc, il te crée le fichier 'machin.mov' .. mais dedans, il y a le code de ton php ????

Reply

Marsh Posté le 09-09-2004 à 12:50:46    

pas le code php, le resultat html :/
 

Citation :

<html><head>
<title>thornberg.org :: my movie</title>
<link rel="stylesheet" href="../template/thornberg.css" />
</head><body >
<div style="position:absolute; width:320px; height:280px; margin-left:19px; margin-top:57px; float:left;"><embed bgcolor="#bbbbbb" src="../movie/Samurai trailer_website.mov" border="0" scale="aspect" width="100%" height="100%" autostart="false" controller="true" loop="false" cache="true"></div><div style="width:320px; height:100px; position:absolute; margin-top:350px; margin-left:10px;">
Movie name : Samurai<br /><a href="/thornberg.org/pages/movie.php?download&id=8" target="_blank" >download</a>
</div>
<img src="../images/movie_window.jpg"  alt=""/></body></html>


Message édité par Profil supprimé le 09-09-2004 à 12:51:27
Reply

Marsh Posté le 09-09-2004 à 12:55:38    

Citation :


#       $movie = $film->movie_file;
#       $path="../movie/".$movie;
#       Header("Content-Length: ".filesize($path));
#       header("Content-Disposition: attachment; filename=".$movie);  


ca serait pas plutot

Code :
  1. header("Content-Disposition: attachment; filename=".$path);


Reply

Marsh Posté le 09-09-2004 à 12:55:38   

Reply

Marsh Posté le 09-09-2004 à 12:57:16    

ca ne fonctionne pas avec $path :jap:
 
et quand je l'ai sur mon dur en mettant $movie, il me met le bon nom du fichier :)
 
 
mais pas le bon contenu :'(

Reply

Marsh Posté le 09-09-2004 à 13:02:04    

chacal_one333 a écrit :

ca ne fonctionne pas avec $path :jap:
 
et quand je l'ai sur mon dur en mettant $movie, il me met le bon nom du fichier :)
 
 
mais pas le bon contenu :'(


 
au lieu de mettre ../movie tu as essayé le chemin complet ? (http//.../movie...)

Reply

Marsh Posté le 09-09-2004 à 13:04:30    

oui et ca marche pas, ca ne trouve meme plus le nom du fichier n'y rien.
 

Reply

Marsh Posté le 09-09-2004 à 13:07:10    

chacal_one333 a écrit :

oui et ca marche pas, ca ne trouve meme plus le nom du fichier n'y rien.


 

Code :
  1. <?php
  2. // on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions  
  3. switch(strrchr(basename($Fichier_a_telecharger), "." )) {
  4. case ".gz": $type = "application/x-gzip"; break;
  5. case ".tgz": $type = "application/x-gzip"; break;
  6. case ".zip": $type = "application/zip"; break;
  7. case ".pdf": $type = "application/pdf"; break;
  8. case ".png": $type = "image/png"; break;
  9. case ".gif": $type = "image/gif"; break;
  10. case ".jpg": $type = "image/jpeg"; break;
  11. case ".txt": $type = "text/plain"; break;
  12. case ".htm": $type = "text/html"; break;
  13. case ".html": $type = "text/html"; break;
  14. default: $type = "application/octet-stream"; break;
  15. }
  16. header("Content-disposition: attachment; filename=$Fichier_a_telecharger" );
  17. header("Content-Type: application/force-download" );
  18. header("Content-Transfer-Encoding: $type\n" ); // Surtout ne pas enlever le \n
  19. header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger));
  20. header("Pragma: no-cache" );
  21. header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public" );
  22. header("Expires: 0" );
  23. readfile($chemin . $Fichier_a_telecharger);
  24. ?>

Reply

Marsh Posté le 09-09-2004 à 14:32:30    

ok super ca marche SAUF si le nom du ficheier comporte un espace, dans ce cas la firefox essaye de me download "samurai" et pas "samurai movie.mov"
 
IE le fait tout seul pourtant
 
j'ai essayer de mettre le str_replace(" ", "%20", $movie) mais ca refait la meme erreur qu'avant :cry:
 
Une idée comment faire?


Message édité par Profil supprimé le 09-09-2004 à 14:35:14
Reply

Marsh Posté le 09-09-2004 à 14:33:19    

filename='$movie'

Reply

Marsh Posté le 09-09-2004 à 14:35:50    

Reply

Marsh Posté le 09-09-2004 à 14:36:39    

marche pas, j'ai essayer avant et ca cherche à m'enregistrer 'samurai :/

Reply

Marsh Posté le 09-09-2004 à 14:39:02    

le dl ne demarre pas, une fois de plus :/

Reply

Marsh Posté le 09-09-2004 à 14:39:07    

j'ai déjà au ce pb. mais je me souviens plus comment j'avais fait. mais y'a un truc c'est sur

Reply

Marsh Posté le 09-09-2004 à 14:42:53    

a la limite il me le save en samurai.mov sous FF et samurai trailer.mov pour IE
 
dans les deux cas il s'ouvre bien avec quicktime et tout fonctionne avec ce code
 

Code :
  1. $movie = $film->movie_file;
  2.   $path="../movie/".$movie;
  3.   header("Content-disposition: attachment; filename=$movie" ); 
  4.   header("Content-Type: video/quicktime" );
  5.   header("Content-Length: ".filesize($path)); 
  6.   header("Pragma: no-cache" ); 
  7.   header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public" ); 
  8.   header("Expires: 0" ); 
  9.   readfile($path);


 
bref tout marche, mais j'aimerai quand meme avoir le nom de fichier intact sous FF :)

Reply

Marsh Posté le 09-09-2004 à 14:43:37    

a savoir que pour $movie et j'ai essayer avec rawurlencode et ' '

Reply

Marsh Posté le 09-09-2004 à 14:46:57    

toute facon on ne met jamais d'espace ni de majuscule ni de symboles bizarres quand on fait des sites webs !

Reply

Marsh Posté le 09-09-2004 à 14:47:40    

c'est une site de gens dla pub [:spamafote]
 
et il mettent des espaces, parfois non

Reply

Marsh Posté le 09-09-2004 à 14:59:24    

Ton premier code c'est normal qu'il ne marche pas car tu envoyais que les headers HTTP et jamais le contenu (ce que tu fais maintenant à l'aide de la fonction readfile() ).
 
Sinon pour le pb du nom de fichier, tu pourrais pas remplacer les espaces pas des underscores ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed