我正在尝试使用 cURL 将文件名中带有空格的文件上传到专用服务器上。我正在使用 bash。在之前的项目中,我只是放弃了,删除了文件名中的所有空格。这对于该项目来说是不可行的。
在详细模式下运行 cURL 表明它在读取我的本地文件路径时停止:
curl -X PUT -u $USER:$PASS --data-binary @"$LOCAL_FILE" "$SERVER/remote.php/dav/files/$USER/$REMOTE_DIR/$REMOTE_FILE"
其中 $LOCAL_FILE 是本地计算机上文件的路径(带空格),$REMOTE_FILE 也包含空格。
这给出:
警告:无法从文件“/Users/my_account/somepath/with 读取数据
警告:空格
这意味着该命令将"/Users/my_account/somepath/with"和"spaces"作为两条单独的路径。
我该如何解决这个问题?
我的完整代码:
#!/bin/bash -ex
# Local dir - note space in path
IMAGES_DIR="/Users/my_account/somepath/with spaces"
# Remote server, and credentials
SERVER="http://myserver"
REMOTE_DIR="mydir"
USER="myname"
PASS="mypass"
FILE="$1"
LOCAL_FILE="$IMAGES_DIR/$FILE"
REMOTE_FILE=urlencode $FILE
# Move file to the server
curl -v -X PUT -u $USER:$PASS --data-binary @"$LOCAL_FILE" "$SERVER/remote.php/dav/files/$USER/$REMOTE_DIR/$REMOTE_FILE"
# Check that file has made it
echo 'Waiting for …Run Code Online (Sandbox Code Playgroud)