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 -fSLqu'il gère si le côté serveur donne la redirection 302; l' -Rhorodatage côté serveur, -Jpour prendre en compte le côté serveur Content-Disposition, et -Opour 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-Modifiedhorodatage 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' -Nest de vérifier tiemstamp côté serveur et remplacer uniquement lorsque le côté serveur a une nouvelle version; --content-dispositionest de considérer l'en- Content-Dispositiontê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
curlversion sur quel système?