检索文件集合并将它们保存在本地目录中

Retrieving a file collection and saving them in a local directory

我在将图片的 Sharepoint 文件集保存到本地目录时遇到问题。我是 Sharepoint 2016 的新手,我在解决这个问题时遇到了问题。好像当我 运行 这段代码时,它首先通过给我我的文件集合的第一张图片。但是,当我查看预期目录时,图像为 0 字节(只是一个空文件)。在它停留 运行ning 一段时间后,它会抛出以下异常错误。

Error:
Additional information: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

public static void ImageRetrival(DHG.OneDrive.Helpers.OneDriveHelper oneDrive, string user)
{
    try
    {
        var wb = userContext.Web;
        userContext.Load(wb);
        var files = oneDrive.GetOneDriveFilesByFolderName(user);
        var test = Microsoft.SharePoint.Client.File.OpenBinaryDirect(userContext, wb.ServerRelativeUrl);
        FileStream fs = null;

        if (files != null)
        {
            foreach (var file in files)
            {
                var fileName = file.Name.ToString();
                string path = @"C:\Top-Level\" + fileName;
                fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                test.Stream.CopyTo(fs);
            }
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

好的,我明白了,逻辑是错误的,我在 for each 循环之外有以下行,这使得它在我为每个代码重新调用它时变成空的。这就是我的文件显示为 0 字节的原因。

更正代码

    public static void ImageRetrival(PHG.OneDrive.Helpers.OneDriveHelper oneDrive, string user)
    {

        try
        {
            var wb = userContext.Web;
            userContext.Load(wb);
            var files = oneDrive.GetOneDriveFilesByFolderName(user);

            if (files != null)
            {

                foreach (var file in files)
                {
                    // has to be inside my foreach loop referencing file in files which represents a sharepoint filecollection 
                    var fileinfo  = Microsoft.SharePoint.Client.File.OpenBinaryDirect(userContext, file.ServerRelativeUrl);
                    var fileName = file.Name.ToString();
                    string path = @"C:\Top-Level\" + fileName;
                    using (var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                    {
                        fileinfo.Stream.CopyTo(fs);
                    }

                }
            }

        }
        catch (Exception e)
        {
            throw e;
        }

    }