C# 检索文件集合并将其保存在本地目录中
我在将Sharepoint文件集的图片保存到本地目录时遇到问题。我是Sharepoint 2016的新手,在解决此问题时遇到了一些问题。似乎当我运行这段代码时,它第一次传递给我文件集合的第一个图像。但是,当我查看目标目录时,图像是0字节(只是一个空文件)。在它保持运行一段时间后,它抛出以下异常错误 错误:C# 检索文件集合并将其保存在本地目录中,c#,sharepoint,filestream,C#,Sharepoint,Filestream,我在将Sharepoint文件集的图片保存到本地目录时遇到问题。我是Sharepoint 2016的新手,在解决此问题时遇到了一些问题。似乎当我运行这段代码时,它第一次传递给我文件集合的第一个图像。但是,当我查看目标目录时,图像是0字节(只是一个空文件)。在它保持运行一段时间后,它抛出以下异常错误 错误: 其他信息:无法从传输连接读取数据:远程主机强制关闭了现有连接 好的,我发现逻辑是错误的,我在for-each循环外有一行,当我为每个代码调用它时,它使它变为空。这就是我的文件显示为0字节的原因
其他信息:无法从传输连接读取数据:远程主机强制关闭了现有连接
好的,我发现逻辑是错误的,我在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;
}
}
看看这里的@JonSkeets示例,我认为@Method man要干净得多,我让它工作起来更符合逻辑顺序,而不是代码。请看一下更正。
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;
}
}