J'ai besoin de télécharger un fichier distant en utilisant curl.
Voici l'exemple de code que j'ai:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$st = curl_exec($ch);
$fd = fopen($tmp_name, 'w');
fwrite($fd, $st);
fclose($fd);
curl_close($ch);
Mais il ne peut pas gérer de gros fichiers, car il lit d'abord en mémoire.
Est-il possible de diffuser le fichier directement sur le disque?
fwrite
les données depuis que vous les utilisezCURLOPT_FILE
.fwrite
ANDCURLOPT_FILE
. Passer le$fp
est suffisant. J'ai fait les deux et je me suis retrouvé1
à la fin du contenu du fichier.fwrite
J'utilise cette fonction pratique:
En le téléchargeant avec une étape de 4094 octets, il ne remplira pas votre mémoire
Usage:
Vous pouvez ensuite vérifier si tout va bien avec:
la source
fopen()
renvoyant false et timeout vous le mettez dans la boucle while (appeleztime()
et faites le calcul)stream_copy_to_stream
au lieu de copier manuellement le contenu, fait un code plus court. Ni ceci ni cela fonctionne avechttps
(sauf si vous stipulez a$context
). Style procédural concerté - les fonctions de fichier ne sont pas non plus tout à fait OOP, et si vous mettez des options curl dans un tableau, cela aura l'air beaucoup plus propre de toute façon.Trouvez le code ci-dessous si vous souhaitez télécharger le contenu de l'URL spécifiée et souhaitez l'enregistrer dans un fichier.
Si vous souhaitez télécharger un fichier à partir du serveur FTP, vous pouvez utiliser l'extension FTP php. Veuillez trouver ci-dessous le code:
la source
quand
curl
est utilisé pour télécharger un fichier volumineux,CURLOPT_TIMEOUT
c'est l'option principale que vous devez définir.CURLOPT_RETURNTRANSFER
doit être vrai au cas où vous auriez un fichier comme pdf / csv / image, etc.Vous pouvez trouver plus de détails ici (URL correcte) Curl Doc
À partir de cette page:
la source
Vous pouvez utiliser cette fonction, qui crée un fichier temporaire dans le système de fichiers et renvoie le chemin du fichier téléchargé si tout a fonctionné correctement:
la source