【问题标题】:How to implement SharePoint File Upload functionality in C# using this code?如何使用此代码在 C# 中实现 SharePoint 文件上传功能?
【发布时间】:2022-01-18 23:44:07
【问题描述】:

我正在尝试将 SharePoint 文件上传功能添加到我的 C# MVC 项目中。

以下是我的代码:

        var sourceFilePath = @"Z:\itworked.txt";
        var targetUrl = "/Project Room Test";

        using (var ctx = new ClientContext("https://company.sharepoint.com/sites/ProjectRoom"))
        {
            SecureString passWord = new SecureString();

            foreach (char c in "ThisIsNotMyPWD123".ToCharArray()) passWord.AppendChar(c);

            ctx.Credentials = new SharePointOnlineCredentials("username@company.com", passWord);

            //Upload file
            var targetFileUrl = String.Format("{0}/{1}", targetUrl, Path.GetFileName(sourceFilePath));

            using (var fs = new FileStream(sourceFilePath, FileMode.Open))
            {
                Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, targetFileUrl, fs, true);
            }
        }

我知道第一行代码有效,因为如果我通过删除文件扩展名 (.txt) 来更改它,我会收到一条错误消息,指出找不到文件。

我知道第 4-10 行有效,因为我能够执行一个测试,在该测试中我抓取了 web.Title 并将其设置为与申请表中的 Notes 字段相同。此操作需要我的凭据。

产生的错误是 401 Unauthorized against line 17 => Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, targetFileUrl, fs, true);

我认为问题在于 targetUrl 和/或 targetFileUrl。

以下是我可以拖放文件的位置的URL:https://company.sharepoint.com/sites/ProjectRoom/Project%20Room%20Test/Forms/AllItems.aspx

如果我拖放一个文件然后复制它的链接,结果如下:https://company.sharepoint.com/:t:/r/sites/ProjectRoom/Project%20Room%20Test/itworked.txt?btg=2&web=2&e=7kesiF

【问题讨论】:

    标签: c# asp.net-mvc sharepoint file-upload http-status-code-401


    【解决方案1】:

    解决方案是更新 targetUrl => var targetUrl = /sites/ProjectRoom/Project Room Test

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多