嘗試通過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
試圖逃避與反斜線\
已經空格無濟於事
嘗試通過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
試圖逃避與反斜線\
已經空格無濟於事
把網址中的引號。
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上的逃逸系統字符。
嘗試時出現http 400錯誤..該命令適用於沒有空格的文件,雖然 – bennyharassi
如果URL錯誤,將會出現404錯誤。所以問題可能在別的地方。 – Barmar
這是一個便宜的技巧來編碼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
由%的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
空間沒有被指定爲一個空間替換每個空間。使用ASCII十六進制代碼指定。您的網址應該是'「https://www.whatever.com/uploads/Filename%20With%20Spaces.csv」',其中'%20'表示空格。 – alvits
一個有效的URI(RFC3986)不能包含空格,但如果你用雙引號括起了URL,它可能仍然有效...... –
@DanielStenberg - 即使使用雙引號,空格在URL中也是不允許的。必須對URL進行編碼以適應空間。 – alvits