Curl GET在CMD行上,文件名中有空格

时间:2016-01-22 01:51:11

标签: curl cmd

尝试通过CMD行下载文件,但文件名中有空格阻止下载。

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

尝试使用反斜杠\转义空格已经无效

3 个答案:

答案 0 :(得分:2)

将网址放在引号中。

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上的转义字符,因为它们是目录分隔符的原始形式。

答案 1 :(得分:0)

这是编码网址的廉价技巧。它编码的不仅仅是空格。

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

答案 2 :(得分:0)

用%20替换每个空格

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