我想将文件上传到我的nextcloud服务器。问题是我收到了一个错误。第一个curl命令应该创建目录。
curl -u "$USER":"$PW" -X MKCOL "https://MYSERVER/remote.php/dav/files/$USER/$MANY_DIRECTORIES"
curl -u "$USER":"$PW" -T "$FILE" "https://MYSERVER/remote.php/dav/files/$USER/$MANY_DIRECTORIES/$FILE"
如果$MANY_DIRECTORIES
只包含一个目录,它就可以运行。但是,如果该变量包含例如/root/deep/deeper
和deep
不存在我收到此错误:
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre\DAV\Exception\Conflict</s:exception>
<s:message>Parent node does not exist</s:message>
</d:error>
第二个命令抛出此错误:
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre\DAV\Exception\NotFound</s:exception>
<s:message>File with name //test could not be located</s:message>
</d:error>
那么如何创建递归上传文件的目录呢?
感谢。
答案 0 :(得分:1)
没有创建递归目录的选项,因此我将变量拆分为数组并逐个创建目录。
IFS='/' read -r -a array <<<"$2"
for el in "${array[@]}"
do
TEMP=$TEMP/$el
curl -u "$USER:$PW" \
-X MKCOL \
"https://MYSERVER/remote.php/dav/files/$USER$TEMP"
done
curl -u "$USER:$PW" \
-T "$1" "https://MYSERVER/remote.php/dav/files/$USER/$2/$1"
答案 1 :(得分:0)