小编Mic*_*dan的帖子

文件名中包含空格的卷曲上传

我正在尝试使用 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)

bash shell filenames curl spaces

6
推荐指数
1
解决办法
4648
查看次数

标签 统计

bash ×1

curl ×1

filenames ×1

shell ×1

spaces ×1