2011-10-20 7 views
0

J'ai un formulaire d'entrée de type = "fichier" élément et il accepte un fichier. Quand je le télécharge et que je l'envoie au script php côté serveur. Comment écrire le fichier temporaire stocké dans $ _FILES ["file"] ["tmp_name"] octet par octet? Le code ci-dessous ne fonctionne pas. Il semble écrire à la fin de la demande. Si, par exemple, une connexion est perdue entre je voudrais voir si 40% était complet afin que je puisse le reprendre.Comment télécharger un fichier octet par octet dans php

Des pointeurs?

$target_path = "uploads/"; 
$target_path = $target_path . basename($name); 
if (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) { 
     // Open temp file 
     $out = fopen($target_path, "wb"); 
     if ($out) { 
      // Read binary input stream and append it to temp file 
      $in = fopen($_FILES['file']['tmp_name'], "rb"); 

      if ($in) { 
       while ($buff = fread($in, 4096)) 
        fwrite($out, $buff); 

      } 

      fclose($in); 
      fclose($out); 

     } 
} 
+2

Les téléchargements PHP ne fonctionnent pas de cette façon. – ceejayoz

Répondre

2

PHP ne remet pas le contrôle au script cible de téléchargement de fichier jusqu'à ce que après le téléchargement est terminé (ou a échoué). Vous n'avez rien à faire pour 'accepter' le fichier - PHP et Apache prendront soin de l'écrire au nom de fichier spécifié dans le paramètre ['tmp_name'] du tableau $ _FILES.

Si vous essayez de reprendre des téléchargements échoués, vous aurez besoin d'un script beaucoup plus compliqué.

+1

"vous aurez besoin d'un script beaucoup plus compliqué" - Il aurait aussi besoin de quelque chose de plus compliqué du côté client. Les téléchargements HTML ne sont tout simplement pas résumables. Il pourrait y avoir un hocus-pocus API exotique dans Flash ou Java qui pourrait le faire bien. – Boann

+0

Hey Marc, Peux-tu me dire ce que je dois faire? Du côté client html5 en utilisant la fonction de tranche? et ce que je dois faire du côté php? – Vidya