Saya bertemu masalah yang sama dan saya ingin menggunakan kembali nama file yang sama apa pun yang diberikan sisi server, dalam kasus Anda, Anda mungkin mendapatkan nama file dengan basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
maka Anda dapat menulis fungsi bash pembantu seperti:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
tetapi dalam kasus saya nama file bahkan bukan bagian dari url, ia datang dengan disposisi konten; dengan curl baris perintahnya adalah
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
Anda dapat mengabaikan -fSL
itu menangani jika sisi server memberikan 302 Redirection; yang -R
untuk sisi server timestamp, -J
untuk mempertimbangkan sisi server Content-Disposition
, dan -O
untuk beralih ke perilaku Download bukannya dumping di terminal;
Namun, itu masih menderita menolak untuk menimpa jika nama file ada; Saya ingin menimpa jika Last-Modified
timestamp sisi server lebih baru;
berakhir dengan solusi wget yang dapat melakukannya:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
yang -N
adalah untuk memeriksa server side tiemstamp dan menimpa hanya ketika sisi server memiliki versi baru; --content-disposition
adalah untuk mempertimbangkan Content-Disposition
tajuk; dan perilaku default wget adalah mengunduh, ke nama file yang diberikan dari sisi server.
dalam kasus Anda, jika Anda tidak akan peduli cap waktu, hanya saja
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curl
versi apa pada sistem yang mana?