检索文件集合并将它们保存在本地目录中
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;
}
}
我在将图片的 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;
}
}