369 votes

Télécharger le fichier au serveur depuis URL

Eh bien, celui-ci semble assez simple, et c’est. Tout ce que vous avez à faire pour télécharger un fichier sur votre serveur est :

Seulement, il y a un problème. Que se passe-t-il si vous avez un gros fichier, comme 100 Mo. Ensuite, vous manquer de mémoire et ne pas être en mesure de télécharger le fichier.

Ce que je veux est une façon d’écrire le fichier sur le disque que je suis le téléchargement. De cette façon, je peux télécharger de gros fichiers, sans tomber sur des problèmes de mémoire.

554voto

alex Points 186293

Depuis PHP 5.1.0, file_put_contents() pris en charge par pièce par pièce par le passage d'un courant-la poignée de l' $data paramètre:

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));

Dans le manuel:

Si des données [qui est le deuxième argument] est une ressource de flux, le tampon restant de ce flux sera copié dans le fichier spécifié. Ceci est similaire à l'utilisation de stream_copy_to_stream().

(Merci Hakre.)

140voto

xaav Points 1672
private function downloadFile ($url, $path) {

  $newfname = $path;
  $file = fopen ($url, "rb");
  if ($file) {
    $newf = fopen ($newfname, "wb");

    if ($newf)
    while(!feof($file)) {
      fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
    }
  }

  if ($file) {
    fclose($file);
  }

  if ($newf) {
    fclose($newf);
  }
 }

72voto

prodigitalson Points 38549

Essayez en utilisant cURL

Je ne suis pas sûr mais je crois qu’avec le `` option il écrit qu’il tire les données, c’est à dire. non mis en mémoire tampon.

20voto

stra8edge Points 111
<ol> <li>Créez un dossier appelé « téléchargements » dans le serveur de destination</li> <li>Enregistrez-y [ce code] <code></code> de fichiers et exécuter dans le serveur de destination</li> <h3>Downloader :</h3><pre><code></code></pre></ol>

18voto

Dimmy Points 31
set_time_limit(0); 
$file = file_get_contents('path of your file');
file_put_contents('file.ext', $file);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X