尝试通过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