2

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

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

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

有人提示我如何远程标记文件吗?

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

4

2 回答 2

1

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

有效载荷是 JSON:

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

您将需要使用 Basic Auth 进行身份验证

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

于 2017-03-02T14:49:12.230 回答
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 文档也解释了如何以相同的方式添加标签。

于 2018-08-31T13:33:13.930 回答