在返回行Convert.ToBase64String(stream.ToArray())
时从以下来源解决“内存不足异常”方面的帮助表示赞赏;
private static string GetSPFileBinary(ClientContext ctx, string fileUrlPath)
{
ctx.RequestTimeout = Int32.MaxValue;
var spFile = ctx.Web.GetFileByServerRelativeUrl(fileUrlPath);
var spFileContent = spFile.OpenBinaryStream();
ctx.Load(spFile);
ctx.ExecuteQuery();
MemoryStream stream = new MemoryStream();
if (spFileContent != null && spFileContent.Value != null)
{
spFileContent.Value.CopyTo(stream);
}
return Convert.ToBase64String(stream.ToArray());
}
答案 0 :(得分:0)
假设map.cameraTargetBounds = bounds
已成功执行且stream.ToArray()
崩溃,您始终可以将批处理转换为64字符串并将其存储在可以重新加载的位置。然后逐个加载转换后的块并将它们存储到结果文件中。如果您的应用程序在Convert.ToBase64String
崩溃,那么您将需要允许您的应用程序使用更多内存(如果可用),或者在从流加载时应用块加载构思。
答案 1 :(得分:0)
即使是下面抛出相同的旧“内存不足异常”,也值得赞赏。
private static string GetSPFileBinary(ClientContext ctx, string fileUrlPath)
{
ctx.RequestTimeout = Int32.MaxValue;
var spFile = ctx.Web.GetFileByServerRelativeUrl(fileUrlPath);
var spFileContent = spFile.OpenBinaryStream();
ctx.Load(spFile);
ctx.ExecuteQuery();
MemoryStream stream = new MemoryStream();
if (spFileContent != null && spFileContent.Value != null)
{
spFileContent.Value.CopyTo(stream);
}
byte[] docBytes = stream.ToArray();
return Convert.ToBase64String(docBytes);
}