我现在没有可用于测试的 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= {图书馆的完整网址} /Forms/AllItems.aspx&FileName={Doc And分机}
正如我所说,我没有 curl 来测试,但我使用 Fiddler 2 中的 Composer 选项卡让它工作
我现在正在用 curl 尝试这个,但让它工作存在问题。Fiddler 将请求作为 POST 执行。如果您尝试将其作为 GET 请求执行,您将收到 500 错误,说明 SPWeb 的 AllowUnsafeUpdates 属性将不允许通过 GET 进行此请求。将请求作为 POST 发送应该可以纠正这个问题。
编辑我目前正在查看 DotPeek 反编译器中的 checkin.aspx 源,并看到一些可能相关的 ActionCheckin 参数的附加选项,例如 ActionCheckinPublish 和 ActionCheckinFromClientPublish。我会用任何额外的发现来更新它。对于其他感兴趣的人,该页面位于 Microsoft.SharePoint.ApplicationPages.Checkin。