我正在使用NextCloud 11来存储我的个人文件,我使用文档中的简单curl脚本将文件上传到我的NextCloud驱动器:
curl -u user:pw -T test.pdf "http://localhost/nextcloud/remote.php/dav/files/user/test/test.pdf"
此外,我想直接在上传的文件中添加一些标签。但是,在官方文档中,它们只显示如何通过WebDAV界面上载,删除和移动文件。
是否有人提示如何远程标记文件?
我在官方NextCloud社区论坛上发布了同样的问题,但我还没有收到回复。如果我收到回复,我会在这里发布。
答案 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文档还说明了如何以相同的方式添加标签。