Eh bien, celui-ci semble assez simple, et il l'est. Tout ce que vous avez à faire pour télécharger un fichier sur votre serveur est:
file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip"));
Seulement, il y a un problème. Et si vous avez un gros fichier, comme 100 Mo. Ensuite, vous manquerez de mémoire et ne pourrez pas télécharger le fichier.
Ce que je veux, c'est un moyen d'écrire le fichier sur le disque pendant que je le télécharge. De cette façon, je peux télécharger des fichiers plus gros, sans rencontrer de problèmes de mémoire.
Réponses:
Depuis PHP 5.1.0,
file_put_contents()
prend en charge l'écriture pièce par pièce en passant un stream-handle comme$data
paramètre:Du manuel:
(Merci Hakre .)
la source
allow_fopen_url Off
est défini dans php.ini (bonne idée pour la sécurité), votre script serait cassé.file_get_contents()
cela ne fonctionnerait pas non plus si c'était le cas (voir OP).fopen
; empêche les effets néfastes sur les images et autres fichiers de texte non ordinaire.la source
Essayez d'utiliser cURL
Je ne suis pas sûr mais je crois qu'avec l'
CURLOPT_FILE
option qu'il écrit en tirant les données, c'est-à-dire. non tamponné.la source
$fh = fopen('/path/to/download/the/file/to.zip', 'w');
et fermez avecfclose($fh);
aprèscurl_close($ch);
. Et setCURLOPT_FILE => $fh
La réponse de prodigitalson n'a pas fonctionné pour moi. J'ai
missing fopen in CURLOPT_FILE
plus de détails .Cela a fonctionné pour moi, y compris les URL locales:
la source
.php
fichier et exécutez-le sur le serveur de destinationTéléchargeur:
la source
set_time_limit (24 * 60 * 60);
doit être mis dans une boucle. Cela n'a aucun effet au début du script.la source
Il y a 3 façons:
Vous pouvez trouver des exemples d'ici .
la source
Utilisez une méthode simple en php
copy()
Remarque: si le fichier de destination existe déjà, il sera écrasé
Fonction PHP copy ()
Remarque: Vous devez définir l'autorisation 777 pour le dossier de destination. Utilisez cette méthode lorsque vous téléchargez sur votre ordinateur local.
Remarque spéciale: 777 est une autorisation dans un système basé sur Unix avec une autorisation complète de lecture / écriture / exécution pour le propriétaire, le groupe et tout le monde. En général, nous accordons cette autorisation aux actifs qui n'ont pas grand-chose à cacher au public sur un serveur Web. Exemple: dossier d'images.
la source
J'utilise ceci pour télécharger le fichier
la source
Une solution PHP 4 & 5:
readfile () ne présentera aucun problème de mémoire, même lors de l'envoi de fichiers volumineux. Une URL peut être utilisée comme nom de fichier avec cette fonction si les wrappers fopen ont été activés.
http://php.net/manual/en/function.readfile.php
la source