我现在没有可用的 curl 来测试,但你也许可以根据以下信息做出一些调整。
签入和签出由 /_layouts/CheckIn.aspx 处理
该页面具有以下查询字符串变量:
列表 - 标识当前列表的 GUID。
FileName - 带有扩展名的文件的名称。
来源 - 库中 allitems.aspx 页面的完整 URL。
仅使用 FileName 和 Source 参数并省略 List 参数,我就能够正确加载 CheckIn.aspx 页面。这很好,因为您不必想办法查找列表 GUID。
CheckIn.aspx 页面使用以下控制签入的表单参数回发到自身:
PostBack - 布尔值设置为 true。
CheckInAction - 字符串设置为 ActionCheckin
KeepCheckout - 设置为 1 保持结帐,设置为 0 保持签入
CheckinDescription - 文本字符串
像这样在 curl 中调用它
curl --data "PostBack=true&CheckinAction=ActionCheckin&KeepCheckout=0&CheckinDescription=SomeTextForCheckIn" http://{您的服务器和站点}/_layouts/checkin.aspx?Source={Full Url到库}/Forms/AllItems.aspx&FileName={Doc And Ext}
正如我所说,我没有 curl 可以测试,但我使用 Fiddler 2 中的 Composer 选项卡让它工作
我现在正在用 curl 尝试这个,但让它工作时出现了问题。 Fiddler 将请求作为 POST 执行。如果您尝试以 GET 请求的形式执行此操作,您将收到 500 错误,指出 SPWeb 的 AllowUnsafeUpdates 属性将不允许通过 GET 进行此请求。将请求作为 POST 发送应该可以纠正这个问题。
编辑 我目前正在查看 DotPeek 反编译器中的 checkin.aspx 源代码,并看到一些与 ActionCheckin 参数相关的附加选项,例如 ActionCheckinPublish 和 ActionCheckinFromClientPublish。我会用任何额外的发现来更新它。该页面位于 Microsoft.SharePoint.ApplicationPages.Checkin 供任何其他感兴趣的人使用。