c# - 如何在 SharePoint 2013 中使用 REST API 将附件文件附加到列表项

标签 c# rest sharepoint sharepoint-2013

请教专家

有谁知道如何在 SharePoint 2013 中使用 REST API 将附件文件附加到列表项? 我搜索了以下文档。但是没有关于上传文件作为列表项附件的信息。

http://msdn.microsoft.com/en-us/library/fp142386.aspx

附加信息:

我找到了下面的文章。

http://chuvash.eu/2013/02/20/rest-api-add-a-plain-text-file-as-an-attachment-to-a-list-item/

根据这篇文章,可以使用以下 Javascript 代码将附件文件上传到列表项。我想使用 C#。我现在正在尝试,但我仍然没有成功。

var content = "Hello, this text is inside the file created with REST API";
var digest = $("#__REQUESTDIGEST").val();
var composedUrl = "/_api/web/lists/GetByTitle('List1')/items(1)/AttachmentFiles/add(FileName='readme.txt')";
$.ajax({
    url: composedUrl,
    type: "POST",
    data: content,
    headers: {        
        "X-RequestDigest": digest
    }
})

最佳答案

有多种方法可以使用 .NET 使用 SharePoint REST API,下面列出了其中一些方法:

  • HttpClient - 提供用于发送 HTTP 请求和从 URI 标识的资源接收 HTTP 响应的基类。 (.NET Framework 4.5)
  • WebClient - 提供向 URI 标识的资源发送数据和从其接收数据的通用方法。 (.NET Framework 1.1)
  • HttpWebRequest - 提供 WebRequest 类的特定于 HTTP 的实现,比以前的类更底层

所有这些都允许使用 REST 接口(interface)在 SharePoint Online/SharePoint 2013 中执行 CRUD 操作。

SPWebClient class演示如何使用 WebClient 执行 CRUD 操作.

如何通过 SharePoint REST API 添加附件

以下示例演示如何将附件文件添加到 SharePoint Online 中的列表:

var credentials = new SharePointOnlineCredentials(userName, securePassword);
AddAttachmentFile(webUrl, credentials, "Nokia Offices", 1, @"c:\upload\Nokia Head Office in Espoo.jpg");


public static void AddAttachmentFile(string webUrl,ICredentials credentials,string listTitle,int itemId,string filePath)
{
        using (var client = new SPWebClient(new Uri(webUrl),credentials))
        {
            var fileContent = System.IO.File.ReadAllBytes(filePath);
            var fileName = System.IO.Path.GetFileName(filePath);
            var endpointUrl = string.Format("{0}/_api/web/lists/GetByTitle('{1}')/items({2})/AttachmentFiles/add(FileName='{3}')", webUrl,listTitle,itemId,fileName);
            client.UploadFile(new Uri(endpointUrl), fileContent);
        }
}

依赖关系:

关于c# - 如何在 SharePoint 2013 中使用 REST API 将附件文件附加到列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15952502/

相关文章:

rest - 如何使用 PowerShell 和 REST API 从 TFS 2017u2 获取最新版本的代码覆盖率

angular - 如何在 Angular 中的 HTTP post 请求中传递 url 中的查询参数

java - 在 Restful Web 服务中获取托管 Bean 引用

对 sharepoint 的 C# CAML 查询返回列表中的所有项目(而不是仅匹配查询值的项目)

Sharepoint 编辑表单取消不起作用。 Dlg=1吗?

css - 将 CSS 应用于单个 Web 部件上的 Sharepoint 站点

c# - 事件可以安全地用于多线程应用程序吗

c# - 多线程问题

c# - 让父级处理子控件事件或命令 WPF?

c# - 如何比较不包括单个对象属性的两个对象?