如何使用curl自动上传和检入文件到sharepoint?

时间:2012-11-18 17:14:17

标签: sharepoint curl

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

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

但是,此上传文件显示在我登录的sharepoint中的“已签出”视图(绿色箭头)中。 因此,来自其他登录的用户不存在此文件。

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

有关如何使用cURL“签入”此文件与sharepoint的任何想法,以便可以从任何人的登录信息中查看该文件?

3 个答案:

答案 0 :(得分:1)

我现在没有可用于测试的卷曲,但您可以通过以下信息来制作一些东西。

签入和签出由/_layouts/CheckIn.aspx

处理

该页面包含以下查询字符串变量:

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

FileName - 带扩展名的文件的名称。

来源 - 图书馆中allitems.aspx页面的完整网址。

我只能使用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:// {Your Server And Site} / _ layouts / checkin.aspx?Source = {Full Url To Library} /Forms/AllItems.aspx&FileName= {Doc And Ext}

正如我所说,我没有卷曲测试,但是我使用Fiddler 2中的Composer选项卡让它工作

我正在尝试使用curl,并且有一个问题让它工作。 Fiddler正在执行POST请求。如果您尝试将此作为GET请求执行此操作,则会收到500错误,指出SPWeb的AllowUnsafeUpdates属性不允许此请求通过GET。将请求作为POST发送应该纠正这一点。

编辑我目前正在浏览DotPeek反编译器中的checkin.aspx源,并看到一些可能相关的ActionCheckin参数的其他选项,例如ActionCheckinPublish和ActionCheckinFromClientPublish。我会用任何其他发现更新这个。该页面位于Microsoft.SharePoint.ApplicationPages.Checkin,供其他任何感兴趣的人使用。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我关于Performing multiple requests using cURL的问题有一个使用bash和cURL的非常全面的例子,尽管它不得不为每个请求重新输入密码。