我创建了一个用于从FTP下载文件的C#应用程序。我无法下载大小超过1 MB的文件。下载文件时出现“数据已损坏”错误。这是我的下载代码。
int count = 0;
do
{
byte[] buffer = new byte[1024];
conn.ReadTimeout = 15000000;
count = istream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);
} while (istream.CanRead && count > 0);
byteArray = memoryStream.ToArray();
var workBook = new XLWorkbook(memoryStream);
var workSheet = workBook.Worksheets.First();
答案 0 :(得分:2)
您的代码存在问题,当您从istream读取数据并且没有更多数据时它将返回计数0,并且您需要退出循环,而不是将数据读取到memoryStream。
试试这个:
while(true)
{
byte[] buffer = new byte[1024];
conn.ReadTimeout = 15000000;
count = istream.Read(buffer, 0, buffer.Length);
if (count == 0)
break;
memoryStream.Write(buffer, 0, count);
}
istream.Close();
byteArray = memoryStream.ToArray();
var workBook = new XLWorkbook(memoryStream);
var workSheet = workBook.Worksheets.First()
在循环之后也关闭你的istream,否则下载的文件可能会被截断,这可能是你收到“数据已损坏”错误的原因。
答案 1 :(得分:1)
在将数据上传到FTP服务器时,我的系统阻止了防火墙问题。上传的数据在FTP服务器上已损坏,我正在尝试使用我的代码下载相同的损坏数据。