C# 从 FTP AS400 下载文件
C# Download File from FTP AS400
我们目前有一个 *.BAT 文件,其中包含一些 FTP 命令,用于从我们的 AS400 下载文件并保存到文本文件中。 BAT 工作正常,文本文件将在另一个下显示下载文件中的记录。
现在,我们想摆脱这个 *.BAT 文件并使用 C# 为我们下载文件并保存到文本文件中。现在的问题是我们得到的文件包含一行字符串中的所有记录!他们不再列在彼此之下。
这是我们使用的代码:
tpWebRequest request = default(FtpWebRequest);
FtpWebResponse response = default(FtpWebResponse);
StreamWriter writer = default(StreamWriter);
request = WebRequest.Create("*******URL******") as FtpWebRequest;
request.Credentials = new NetworkCredential("user", "pass");
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UseBinary = true;
response = request.GetResponse() as FtpWebResponse;
writer = new StreamWriter(Server.MapPath("/filename.txt"));
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(37))) //37 for IBM encoding
{
writer.WriteLine(reader.ReadToEnd());
}
writer.Close();
response.Close();
知道我们为什么会收到这个吗?为什么简单的 DOS FTP 命令比我们的代码工作得更好?
非常感谢! :)
问题可能很简单:您一次阅读了整个文档。您需要单独阅读每一行:
using(StreamReader sr = new StreamReader(fs))
{
while(!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
}
ASCII模式会在下载物理文件时添加记录分隔符。这是大多数 ftp 客户端的默认传输模式。
request.UseBinary = false;
Specifying false causes the FtpWebRequest to send a "Type A" command to the server.
我们目前有一个 *.BAT 文件,其中包含一些 FTP 命令,用于从我们的 AS400 下载文件并保存到文本文件中。 BAT 工作正常,文本文件将在另一个下显示下载文件中的记录。
现在,我们想摆脱这个 *.BAT 文件并使用 C# 为我们下载文件并保存到文本文件中。现在的问题是我们得到的文件包含一行字符串中的所有记录!他们不再列在彼此之下。
这是我们使用的代码:
tpWebRequest request = default(FtpWebRequest);
FtpWebResponse response = default(FtpWebResponse);
StreamWriter writer = default(StreamWriter);
request = WebRequest.Create("*******URL******") as FtpWebRequest;
request.Credentials = new NetworkCredential("user", "pass");
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UseBinary = true;
response = request.GetResponse() as FtpWebResponse;
writer = new StreamWriter(Server.MapPath("/filename.txt"));
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(37))) //37 for IBM encoding
{
writer.WriteLine(reader.ReadToEnd());
}
writer.Close();
response.Close();
知道我们为什么会收到这个吗?为什么简单的 DOS FTP 命令比我们的代码工作得更好?
非常感谢! :)
问题可能很简单:您一次阅读了整个文档。您需要单独阅读每一行:
using(StreamReader sr = new StreamReader(fs))
{
while(!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
}
ASCII模式会在下载物理文件时添加记录分隔符。这是大多数 ftp 客户端的默认传输模式。
request.UseBinary = false;
Specifying false causes the FtpWebRequest to send a "Type A" command to the server.