我希望根据我自己的主键(而不是 SharePoint 使用的自动生成的 item_id 字段)向各种列表项添加 1 个(或更多)附件。
以下是通过 SharePoint REST API 将附件添加到 SharePoint 中的列表项的模板:
POST https://{site_url}/_api/web/lists/getbytitle('{list_title}')/items({item_id}/AttachmentFiles/add(FileName='{file_name}')
Authorization: "Bearer " + accessToken
Content-Length: {length of request body as integer}
X-RequestDigest: "{form_digest_value}"
"Contents of file"
有没有办法更改上述 URL 以在 item_id 之外的其他内容上添加附件?下面的 GET 请求端点示例根据指定的键:值对进行过滤以检索字段(包括上面 URL 指定的 item_id),但我想知道如何直接根据我指定的字段添加附件尽可能减少 API 调用次数。
/_api/web/lists/GetByTitle('List')/items?$filter=MyPrimaryKey eq '...'
我尝试构建自己的 URL,该 URL 使用附件创建和各种过滤,但任何此类尝试都会产生 400 错误,表明格式/URL 构建无效。
遗憾的是,无法使用 SharePoint REST API 调用使用基于自定义字段/列的过滤器将附件添加到列表项。
您仅需要使用项目 ID 来将附件添加到 SharePoint 列表项目。
(您可能已经知道这一点)因此,您必须首先使用您提到的第二个 API 调用来获取项目 ID:
/_api/web/lists/GetByTitle('List')/items?$filter=MyPrimaryKey eq '...'
然后使用从上述 API 调用中获取的项目 ID 将附件添加到 SharePoint 列表项,如第一个 API 调用中所述:
https://{site_url}/_api/web/lists/getbytitle('{list_title}')/items({item_id}/AttachmentFiles/add(FileName='{file_name}')
文档: