J'ai rencontré le même problème et je veux réutiliser le même nom de fichier quel que soit le côté serveur, dans votre cas, vous pouvez obtenir le nom de fichier en basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
alors vous pouvez écrire une fonction bash d'aide comme:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
mais dans mon cas, le nom de fichier ne fait même pas partie de l'url, il vient avec la disposition du contenu; avec curl la ligne de commande est
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
vous pouvez ignorer ce -fSL
qu'il gère si le côté serveur donne la redirection 302; l' -R
horodatage côté serveur, -J
pour prendre en compte le côté serveur Content-Disposition
, et -O
pour passer au comportement de téléchargement au lieu de vider sur le terminal;
cependant, il souffre toujours de refuser d'écraser si le nom de fichier existe; Je veux qu'il écrase si l' Last-Modified
horodatage côté serveur est plus récent;
se retrouve avec une solution wget, il est capable de le faire:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
l' -N
est de vérifier tiemstamp côté serveur et remplacer uniquement lorsque le côté serveur a une nouvelle version; --content-disposition
est de considérer l'en- Content-Disposition
tête; et le comportement par défaut de wget est de télécharger, vers le nom de fichier donné du côté serveur.
dans votre cas, si vous ne vous souciez pas de l'horodatage, c'est juste
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curl
version sur quel système?