13

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

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

但是,这个上传的文件显示在我登录后共享点的“签出”视图(绿色箭头)中。因此,其他登录的用户不存在此文件。

我的登录名具有对 sharepoint 的写访问权限。

关于如何“签入”此文件以与 cURL 共享点的任何想法,以便可以从任何人的登录中查看该文件?

4

3 回答 3

0

My question about Performing multiple requests using cURL has a pretty comprehensive example using bash and cURL, although it suffers from having to reenter the password for each request.

于 2015-02-05T10:37:58.267 回答
0

我现在没有可用于测试的 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。

于 2012-11-27T18:40:01.710 回答
0

Junx的上述答案是正确的。但是,Filename 变量不仅是文档文件名和扩展名,还应该包括库名。我能够使用以下方法使其正常工作。

例子:http://domain/_layouts/Checkin.aspx?Filename=Shared Documents/filename.txt

于 2013-04-16T22:56:58.987 回答