【发布时间】:2020-03-15 10:18:52
【问题描述】:
我正在尝试使用 csvhelper 发送 CSV。但是我发送的时候总是空的。
using (var sftProvider =new SFTProvider(Configuration))
using (var csvProvider=new CSVProvider(Configuration))
using (Stream fileStream = new MemoryStream())
{
var sftp = sftProvider.SFTPConnection("", "", "");
var nameFile = "/ethias/"+DateTime.Now.ToString(DateFormatConstants.DATE_FORMAT) + ".csv";
if (sftp.Exists(nameFile))
{
sftProvider.ReadFileSFTP(sftp, nameFile, fileStream);
}
await csvProvider.WriteCsv(new List<EthiasResultDTO>() {ethiasResultDto},fileStream);
sftProvider.UploadFileSFTP(sftp,nameFile,fileStream);
}
csv 的代码:
public async Task WriteCsv<T>(List<T> csvInfo, Stream stream)
{
using(var writer = new StreamWriter(stream, Encoding.UTF8))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.Configuration.Delimiter = ";";
if ( stream.Length > 0)
{
csv.Configuration.HasHeaderRecord = false;
}
csv.WriteRecords(csvInfo);
}
}
我尝试了一些东西,但它总是创建空文件。
【问题讨论】:
-
进入同一个fileStream,你首先应用ReadFileSFTP(),然后WriteCsv()。我认为您所做的是从 FTP 位置获取文件,将一些记录附加到其中,然后将其放回原处。如果是这种情况,只需设置
fileStream.Position = 0;before 将其传递给UploadFileSFTP -
如果@OguzOzgul 的建议没有帮助,我们将需要minimal reproducible example。您还没有告诉我们有关 FTP/SFTP 库的任何信息。甚至不清楚您使用的是 FTP 还是 SFTP。
-
我使用 sftp Renci.SshNet
-
我只有一个用于 sftp 的通用类
-
我只在有文件的情况下恢复记录,但我也有问题,当我只创建和广告一个新文件时,csv中的记录为空
标签: c# sftp memorystream csvhelper ssh.net