La manière la plus simple de récupérer la taille du fichier distant en PHP?
Je pensais faire une requête head avec cURL, je me demandais si c'est la voie à suivre?
source d'informationauteur meder omuraliev
Vous devez vous connecter pour publier un commentaire.
Oui. Puisque le fichier est à distance, vous êtes totalement dépendant de la valeur de la
Content-Length
en-tête (sauf si vous voulez télécharger le fichier entier). Vous aurez envie decurl_setopt($ch, CURLOPT_NOBODY, true)
etcurl_setopt($ch, CURLOPT_HEADER, true)
.La meilleure solution qui suit le principe de BAISER
Je devine à l'aide de curl pour envoyer une requête HEAD est une belle possibilité ; quelque chose comme ce serait probablement faire :
Et vous obtiendrez :
De cette façon, vous utilisez une requête HEAD, et de ne pas télécharger tout le fichier -- toujours, vous pouvez compter sur le serveur distant envoyer un Contenu correct en-tête de longueur.
Une autre option que vous pourriez penser serait d'utiliser
taille
... Mais on va à l'échec : la documentation états (en les citant) :Et, malheureusement, avec HTTP et HTTPS wrappers
stat()
n'est pas pris en charge...Si vous essayez, vous allez obtenir une erreur, comme ceci :
Trop mal 🙁
À l'aide d'une TÊTE de demande et de vérification pour
Content-Length
est la façon standard de le faire, mais vous ne pouvez pas compter sur elle en général, étant donné que le serveur ne prend pas en charge. LeContent-Length
en-tête est facultatif, et de plus le serveur ne peut même pas mettre en œuvre la méthode HEAD. Si vous savez quel serveur vous êtes de sondage, alors vous pouvez tester si cela fonctionne, mais comme une solution générale, il n'est pas de preuve de balle.Si vous n'avez pas besoin d'un pare-balles solution, tu peux faire: