2016-01-22 30 views
0

嘗試通過CMD行下載文件,但文件名中有空格以防止下載。在CMD行上使用文件名中的空格進行GET處理

curl --request GET -v --user user$site:password https://www.whatever.com/uploads/Filename With Spaces.csv > /users/kanye_west/desktop/FilenameWithSpaces.csv 

試圖逃避與反斜線\已經空格無濟於事

+0

空間沒有被指定爲一個空間替換每個空間。使用ASCII十六進制代碼指定。您的網址應該是'「https://www.whatever.com/uploads/Filename%20With%20Spaces.csv」',其中'%20'表示空格。 – alvits

+0

一個有效的URI(RFC3986)不能包含空格,但如果你用雙引號括起了URL,它可能仍然有效...... –

+0

@DanielStenberg - 即使使用雙引號,空格在URL中也是不允許的。必須對URL進行編碼以適應空間。 – alvits

回答

-1

把網址中的引號。

curl --request GET -v --user user$site:password "https://www.whatever.com/uploads/Filename With Spaces.csv" > /users/kanye_west/desktop/FilenameWithSpaces.csv 

反斜槓將工作在Unix,而是因爲他們是目錄分隔符的原始形式,他們不被用作Windows上的逃逸系統字符。

+0

嘗試時出現http 400錯誤..該命令適用於沒有空格的文件,雖然 – bennyharassi

+0

如果URL錯誤,將會出現404錯誤。所以問題可能在別的地方。 – Barmar

0

這是一個便宜的技巧來編碼url。它編碼的不僅僅是空間。

urlencode() { 
    # urlencode <string> 

    local length="${#1}" 
    for ((i = 0; i < length; i++)); do 
     local c="${1:i:1}" 
     case $c in 
      [a-zA-Z0-9.~_-:/]) printf "$c" ;; 
      *) printf '%%%x' \'"$c" ;; 
     esac 
    done 
} 

然後,您可以在傳遞到curl之前使用此函數轉換您的網址。

curl --request GET -v --user user$site:password $(urlencode "https://www.whatever.com/uploads/Filename With Spaces.csv") > /users/kanye_west/desktop/FilenameWithSpaces.csv

0

由%的URL 20個

curl --request GET -v --user user$site:password https://www.whatever.com/uploads/Filename%20With%20Spaces.csv > /users/kanye_west/desktop/FilenameWithSpaces.csv 
相關問題