Ich bin auf dasselbe Problem gestoßen und möchte denselben Dateinamen auf jeder Serverseite wiederverwenden. In Ihrem Fall erhalten Sie möglicherweise den Dateinamen von basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
Dann können Sie eine Helfer-Bash-Funktion schreiben wie:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
aber in meinem Fall ist der Dateiname nicht einmal Teil der URL, er kommt mit inhaltlicher Disposition; mit curl ist die Kommandozeile
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
Sie können die -fSL
Handles ignorieren , wenn die Serverseite 302 Redirection ausgibt. den -R
Zeitstempel für die Serverseite, -J
um die Serverseite zu berücksichtigen Content-Disposition
und -O
zum Download-Verhalten zu wechseln, anstatt auf dem Terminal zu sichern;
Es leidet jedoch immer noch unter der Weigerung, das Überschreiben zu verweigern, wenn der Dateiname vorhanden ist. Ich möchte, dass es überschrieben wird, wenn der serverseitige Last-Modified
Zeitstempel neuer ist.
endet mit einer wget-Lösung, die dies kann:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
Das -N
ist, den serverseitigen Zeitstempel zu überprüfen und nur zu überschreiben, wenn die serverseitige Version neu ist. --content-disposition
ist Content-Disposition
Header zu betrachten ; Das Standardverhalten von wget ist das Herunterladen auf den von der Serverseite angegebenen Dateinamen.
In Ihrem Fall ist es nur so, wenn Sie sich nicht für den Zeitstempel interessieren
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curl
Version auf welchem System?