2011-09-16 73 views
21

可能重複下載文件時,我保存遠程文件名:
How do I save a file using the response header filename with cURL如何使用curl

我需要下載成千上萬的圖像格式

http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0

如果您將該鏈接粘貼到瀏覽器中,我t試圖下載一個名爲1.jp2的文件

我想用curl來做同樣的事情。然而,當我運行

捲曲-I「http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0

文件名被報告爲404.txt,您可以下載並看到它實際上是我想要的文件。我不能使用-O選項,因爲分配給文件的名稱不好,而且我有技術上的理由需要系統上使用的實際名稱。

如何讓curl下載相同的文件我在瀏覽器中檢索時沒有問題?謝謝。

+0

我的猜測是,這與調用者的用戶代理有某種關係,儘管我只是嘗試添加chrome的UA而沒有幫助。 –

回答

34

[編輯]我刪除了我在修改標題嘗試...該解決方案就簡單多了![/編輯]

尤里卡!該解決方案是使用-O -J

-O, --remote-name   Write output to a file named as the remote file 
-J, --remote-header-name Use the header-provided filename 

所以......

curl -O -J 'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0' 

ただ!我不得不升級我的CURL。我有v 7.19,不支持-J但是7.22(這是最新的)。

+1

@ Dr.Debel你只需要'-J'而不是'-H'只是:'curl -O -J'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR= 0'' –

-1

你可以使用-o選項嗎?例如

curl 'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=[0-9]' -o "#1.jpg" 
+0

他說在他的問題中,他不能使用-O,因爲他不希望文件名是showfile.exe?等。注意! :) –

+0

那麼,你也應該注意。它是一個小的「o」,它具有讓用戶定義文件名的功能。 –

+0

在這種情況下,用戶無法定義文件名......它來自傳入響應的標題 –