通过WebDAV脚本标记NextCloud文件

时间:2017-03-02 08:40:22

标签: owncloud nextcloud

我正在使用NextCloud 11来存储我的个人文件,我使用文档中的简单curl脚本将文件上传到我的NextCloud驱动器:

curl -u user:pw -T test.pdf "http://localhost/nextcloud/remote.php/dav/files/user/test/test.pdf"

此外,我想直接在上传的文件中添加一些标签。但是,在官方文档中,它们只显示如何通过WebDAV界面上载,删除和移动文件。

是否有人提示如何远程标记文件?

我在官方NextCloud社区论坛上发布了同样的问题,但我还没有收到回复。如果我收到回复,我会在这里发布。

2 个答案:

答案 0 :(得分:1)

POST https://yournextcloud.com/index.php/api/v1/files/path/to/file

Payload是JSON:

{"tags": ["tag1", "tag2"]}

您需要使用Basic Auth

进行身份验证

编辑:只能从Nextcloud内部调用API,因为需要CSRF令牌。

答案 1 :(得分:0)

记录下来,经过一番挖掘,我发现https://doc.owncloud.com/server/latest/developer_manual/webdav_api/tags.html也会对nextcloud起作用。简而言之:

获取给定文件的文件ID:

curl --silent -u user:password -X PROPFIND -H "Content-Type: text/xml" \
  --data-binary "@file-propfind.xml" https://nextcloud/remote.php/webdav/file' | xmllint --format -

在目录中带有file-propfind.xml且包含类似内容

<?xml version="1.0" encoding="utf-8" ?>
<a:propfind xmlns:a="DAV:" xmlns:oc="http://owncloud.org/ns">
  <a:prop>
    <oc:fileid/>
  </a:prop>
</a:propfind>

然后使用获取该文件的标签列表

curl --silent -u user:password -X PROPFIND -H "Content-Type: text/xml" \
  --data-binary "@tags-propfind.xml" https://nextcloud/remote.php/dav/systemtags-relations/files/<FILEID>" | xmllint --format -

其中FILEID是您在上一个响应中作为oc:fileid获得的数字,而tags-propfind.xml是包含类似内容的文件

<?xml version="1.0" encoding="utf-8" ?>
<a:propfind xmlns:a="DAV:" xmlns:oc="http://owncloud.org/ns">
  <a:prop>
    <oc:display-name/>
    <oc:user-visible/>
    <oc:user-assignable/>
    <oc:id/>
  </a:prop>
</a:propfind>

这是用于标签读取的,但是API文档还说明了如何以相同的方式添加标签。