如何使用c#从FTP下载大于1MB的文件

时间:2015-09-29 14:04:22

标签: c# file download ftp

我创建了一个用于从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();

enter image description here

2 个答案:

答案 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服务器上已损坏,我正在尝试使用我的代码下载相同的损坏数据。