Я пытался установить ftp файл dtl из .net в AS400. Мне сообщают об ошибке: «Обрезана одна или несколько строк», и администратор говорит, что файл содержит 256 строк, имеющих столбцы переменной длины. Я нашел это объяснение онлайн:
мы должны установить значения по умолчанию, потому что никакой информации о файле не существует. RECFM по умолчанию - V, а LRECL - 256. Это означает, что SAS будет сканировать входную запись в поисках CR & LF, чтобы сообщить нам, что мы находимся в EOR. Если маркер не найден в пределах LRECL, SAS отбрасывает данные от значения LRECL до конца записи и добавляет в журнал сообщение о том, что «одна или несколько строк были усечены».
Так что мне нужно установить LRECL. Как мне сделать это в C # .NET?
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
ftp.Credentials = new NetworkCredential(user, pwd);
ftp.KeepAlive = false;
ftp.UseBinary = false;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
FileStream fs = File.OpenRead(inputfilepath + ftpfileName);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
int i = 0;
int intBlock = 1786;
int intBuffLeft = buffer.Length;
while (i < buffer.Length)
{
if (intBuffLeft >= 1786)
{
ftpstream.Write(buffer, i, intBlock);
}
else
{
ftpstream.Write(buffer, i, intBuffLeft);
}
i += intBlock;
intBuffLeft -= 1786;
}
ftpstream.Close();