能否通过自定义主键而非Item ID向SharePoint列表项添加附件?
- SharePoint REST API的
AttachmentFiles/add附件添加端点仅支持通过Item ID定位列表项,没办法直接用自定义字段(比如你的MyPrimaryKey)构造合法请求URL,这就是你组合过滤条件时返回400错误的原因。
最优简化方案(减少API调用次数)
如果想尽量少调用接口,可以按以下步骤操作:
批量获取自定义主键与Item ID的映射
用一个GET请求一次性拉取所有需要处理的列表项的关键信息,避免多次查询:GET https://{site_url}/_api/web/lists/getbytitle('{list_title}')/items?$select=ID,MyPrimaryKey&$filter=MyPrimaryKey in ('key1','key2','key3')这里用
in操作符可以同时筛选多个自定义主键值,一次性拿到所有需要的Item ID。循环调用附件添加接口
拿到Item ID后,直接替换POST接口URL中的{item_id},循环执行附件上传操作: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"
补充说明
目前SharePoint REST API没有提供直接通过自定义字段关联附件的原生端点,必须先获取Item ID才能执行附件操作。上述方案能把API调用次数压缩到最少:1次批量查询 + N次上传(N为需要添加附件的列表项数量),是当前最简化的处理流程。
内容的提问来源于stack exchange,提问作者a_g
相关产品推荐
相关产品推荐

