为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 csom 删除共享点中的多个文件

如何使用 csom 删除共享点中的多个文件

C#
梦里花落0921 2023-09-24 16:29:33
我正在从列表中的特定文件夹下载文件。一切正常。然后我老板让我下载后删除文件。这是我尝试过的。            SecureString str = new SecureString();            string cnf = Util.Cipher(ConfigurationManager.AppSettings["cnf"].ToString());            foreach (char ch in cnf.ToCharArray())            {                str.AppendChar(ch);            }            string user = ConfigurationManager.AppSettings["user"].ToString();            SharePointOnlineCredentials credentials = new SharePointOnlineCredentials(user, str);            string siteUrl = ConfigurationManager.AppSettings["site_url"].ToString();            using (ClientContext ctx = new ClientContext(siteUrl))            {                ctx.Credentials = credentials;                string library = ConfigurationManager.AppSettings["sharepoint_library"].ToString();                List mylibrary = ctx.Web.Lists.GetByTitle(library);                FileCollection files = mylibrary.RootFolder.Folders.GetByUrl(sharepointFolder).Files;                ctx.Load(files);                ctx.ExecuteQuery();                foreach (Microsoft.SharePoint.Client.File file in files)                {                    FileInformation fileinfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, file.ServerRelativeUrl);                    ctx.ExecuteQuery();                    using (FileStream filestream = new FileStream(dir + "\\" + file.Name, FileMode.Create))                    {                        fileinfo.Stream.CopyTo(filestream);                    }                    file.DeleteObject();                    ctx.ExecuteQuery();                }            }这是我收到的错误。该集合已被修改。枚举操作可能无法执行。PS 一切正常,直到我添加这行代码。file.DeleteObject();
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

只需修改代码片段如下:


using Microsoft.SharePoint.Client;

using System.IO;

using System.Linq;

using System.Security;


namespace CSOM

{

    class Program

    {

        static void Main(string[] args)

        {


            using (ClientContext ctx = new ClientContext("https://tenant.sharepoint.com/sites/dev"))

            {

                string password = "*****";

                string account = "user@tenant.onmicrosoft.com";

                var secret = new SecureString();

                foreach (char c in password)

                {

                    secret.AppendChar(c);

                }

                ctx.Credentials = new SharePointOnlineCredentials(account, secret);


                List mylibrary = ctx.Web.Lists.GetByTitle("Documents");

                FileCollection files = mylibrary.RootFolder.Folders.GetByUrl("/sites/dev/shared documents/folder1").Files;


                ctx.Load(files);

                ctx.ExecuteQuery();


                foreach (Microsoft.SharePoint.Client.File file in files)

                {

                    FileInformation fileinfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, file.ServerRelativeUrl);


                    ctx.ExecuteQuery();


                    using (FileStream filestream = new FileStream("D:" + "\\" + file.Name, FileMode.Create))

                    {

                        fileinfo.Stream.CopyTo(filestream);

                    }


                }

                files.ToList().ForEach(file => file.DeleteObject());

                ctx.ExecuteQuery();

            };


        }



    }

}

添加最后两行以在下载后从文件夹中删除文件,我已经测试过并且它在我这边工作。


查看完整回答
反对 回复 2023-09-24
?
心有法竹

TA贡献1866条经验 获得超5个赞

你应该使用

 File.Delete(dir + "\\" + file.Name);


查看完整回答
反对 回复 2023-09-24
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信