sharepoint - 如何使用curl自动上传并 checkin 文件到共享点?

标签 sharepoint curl

我正在尝试使用我的共享点登录凭据将文件从 Linux 上传到共享点。 我使用 cURL 实用程序来实现此目的。上传成功。

使用的命令是:curl --ntlm --user 用户名:密码 --upload-file myfile.txt -k https://sharepointserver.com/sites/mysite/myfile.txt -k 选项用于克服非安全共享点站点的证书错误。

但是,此上传的文件显示在我登录的共享点的“ checkout ” View (绿色箭头)中。 因此,对于其他登录的用户来说,此文件不存在。

我的登录名具有对共享点的写访问权限。

关于如何使用 cURL 将此文件“ checkin ”到共享点以便任何人都可以通过登录查看该文件,有什么想法吗?

最佳答案

我现在没有可用于测试的curl,但您也许可以根据以下信息构建一些内容。

checkin 和 checkout 由/_layouts/CheckIn.aspx处理

该页面具有以下查询字符串变量:

列表 - 标识当前列表的 GUID。

FileName - 带扩展名的文件名。

来源 - 库中 allitems.aspx 页面的完整 URL。

仅使用 FileName 和 Source 参数并省略 List 参数,我就能够正确加载 CheckIn.aspx 页面。这很好,因为您不必找出查找列表 GUID 的方法。

CheckIn.aspx 页面使用以下控制 checkin 的表单参数回发到自身:

PostBack - bool 值设置为 true。

CheckInAction - 设置为 ActionCheckin 的字符串

KeepCheckout - 设置为 1 保持结账,设置为 0 保持 checkin

CheckinDescription - 文本字符串

像这样在curl中调用它

curl --data "PostBack=true&CheckinAction=ActionCheckin&KeepCheckout=0&CheckinDescription=SomeTextForCheckIn"http://{您的服务器和站点}/_layouts/checkin.aspx?Source={完整网址到库}/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,供其他感兴趣的人使用。

关于sharepoint - 如何使用curl自动上传并 checkin 文件到共享点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13442467/

相关文章:

c# - 使用 SPFile.Update() 更新 SPFile 属性

sharepoint - 从SharePoint工作流报告错误的最佳方法是什么?

sharepoint - 使用 CSOM(不使用 XML)以编程方式在 SharePoint 中创建字段

c# - SPFolder.Exists 在它确实存在时返回 False

ruby-on-rails - 如何使用 curl CLI 将文件上传到我的 ruby​​ on rails 应用程序?

php cURL - 请求必须分块或具有内容长度

javascript - sharepoint Javascript 集合尚未初始化

curl - 为什么 curl 在我的 Meteor 网站上有效,但 Google 似乎无法抓取我的网站?

php - 从php向Unix套接字发送cURL请求

使用 Curl HTTP Post 到 Ebay 交易 API